在Windows下保存BMP图片还是挺方便的,直接上代码,拷贝就能用

 void savebmp(uchar * pdata, char * bmp_file, int width, int height )
{ //分别为rgb数据,要保存的bmp文件名,图片长宽
int size = width*height**sizeof(char); // 每个像素点3个字节
// 位图第一部分,文件信息
BITMAPFILEHEADER bfh;
bfh.bfType = (WORD)0x4d42; //bm
bfh.bfSize = size // data size
+ sizeof( BITMAPFILEHEADER ) // first section size
+ sizeof( BITMAPINFOHEADER ) // second section size
;
bfh.bfReserved1 = ; // reserved
bfh.bfReserved2 = ; // reserved
bfh.bfOffBits = sizeof( BITMAPFILEHEADER )+ sizeof( BITMAPINFOHEADER );//真正的数据的位置 // 位图第二部分,数据信息
BITMAPINFOHEADER bih;
bih.biSize = sizeof(BITMAPINFOHEADER);
bih.biWidth = width;
bih.biHeight = -height;//BMP图片从最后一个点开始扫描,显示时图片是倒着的,所以用-height,这样图片就正了
bih.biPlanes = ;//为1,不用改
bih.biBitCount = ;
bih.biCompression = ;//不压缩
bih.biSizeImage = size;
bih.biXPelsPerMeter = ;//像素每米
bih.biYPelsPerMeter = ;
bih.biClrUsed = ;//已用过的颜色,24位的为0
bih.biClrImportant = ;//每个像素都重要
FILE * fp = fopen( bmp_file,"wb" );
if( !fp ) return; fwrite( &bfh, , , fp );//由于linux上4字节对齐,而信息头大小为54字节,第一部分14字节,第二部分40字节,所以会将第一部分补齐为16自己,直接用sizeof,打开图片时就会遇到premature end-of-file encountered错误
fwrite(&bfh.bfReserved2, sizeof(bfh.bfReserved2), , fp);
fwrite(&bfh.bfOffBits, sizeof(bfh.bfOffBits), , fp);
fwrite( &bih, sizeof(BITMAPINFOHEADER),,fp );
fwrite(pdata,size,,fp);
fclose( fp );
}

在其他环境要自己编写 文件头和信息头等结构体,才能使用,可参考这篇博客

Windows 保存BMP图片的更多相关文章

  1. 【笨嘴拙舌WINDOWS】BMP图片浏览器

    要将文件显示成图片这其中需要经过 1.将磁盘文件内容读取到内存: 2.将文件对应内存里包含的像素为以及像素信息转化为显示驱动器能理解的格式: 3.将转化过后的内存送到显卡的缓存区 4.显示器读取缓存现 ...

  2. 【VC++技术杂谈006】截取电脑桌面并将其保存为bmp图片

    本文主要介绍如何截取电脑桌面并将其保存为bmp图片. 1. Bmp图像文件组成 Bmp是Windows操作系统中的标准图像文件格式. Bmp图像文件由四部分组成: (1)位图头文件数据结构,包含Bmp ...

  3. 在linux下实现用ffmpeg把YUV420帧保存成图片

    在网上搜了很久相关的问题,但是好像没有一个在linux下跑得比较完整的例子,不过经过自己一番搜索和总结,终于做出来了,哈哈,看下面的代码吧. 这个例子可以保存成bmp或者jpeg格式的图片. 下面的结 ...

  4. 使用ffmpeg将BMP图片编码为x264视频文件,将H264视频保存为BMP图片,yuv视频文件保存为图片的代码

    ffmpeg开源库,实现将bmp格式的图片编码成x264文件,并将编码好的H264文件解码保存为BMP文件. 实现将视频文件yuv格式保存的图片格式的測试,图像格式png,jpg, gif等等測试均O ...

  5. 24位和8位BMP图片保存纯C代码

    BMP图片大家都知道,可以通过查看BMP图片结构使用纯C就可以打开,编辑,处理,保存图片.非常方便使用. 具体BMP结构可以参考:wingdi.h头文件.今天主要在进行删减代码,需要把多余的代码删除, ...

  6. [转]RGB数据保存为BMP图片

    转自:http://blog.csdn.net/yixianfeng41/article/details/52591585 一.BMP文件由文件头.位图信息头.颜色信息和图形数据四部分组成. 1.BM ...

  7. 纯C++代码实现将像素矩阵保存为bmp图片

    由于工作需要,时常需要将像素矩阵保存图片显示观看.为此,特地总结了三种使用纯C++代码生成bmp图片的方法.分别是使用自定义数据.从外界导入的txt和csv以及从图片中导入的数据. 1.使用自定义数据 ...

  8. Delphi RichEdit的内容保存为图片

    uses RichEdit; {将RichEdit1的内容保存为图片,此函数也适合于RxRichEdit,即RichEdit: TRxRichEdit}procedure RichEditToCanv ...

  9. BMP图片解析

    本博客参考:https://www.cnblogs.com/l2rf/p/5643352.html 一.简介 BMP(Bitmap-File)图形文件是Windows采用的图形文件格式,在Window ...

随机推荐

  1. Java经典实例:处理单个字符串

    使用for循环和String对象的charAt()方法:或者,使用"for each"循环和String对象的toCharArray()方法. /** * Created by F ...

  2. 每天一命令 git stash

    git stash  命令是用于保存当前进度的命令.该命令会保存当前工作区的改动.保存的改动是已经跟踪的文件的改动,对于未跟踪的改动stash是不会保存的. git stash 命令常用于分支切换的 ...

  3. Python的下载与安装

    linux系统由于自身的需要,自带了Python,而Windows的系统就没有自带Python.本篇Blog介绍在win8.1下,安装Pathon需要注意的问题,包括常见的0x80240017.250 ...

  4. 异常之JSP页面跳转出错

    今天在开发过程中发现一个问题:在页面中使用了<jsp:forward>抛错Attempt to clear a buffer that's already been flushed!! 百 ...

  5. 用js动态生成css代码

    有时候我们需要利用js来动态生成页面上style标签中的css代码,方法很直接,就是直接创建一个style元素,然后设置style元素里面的css代码,最后把它插入到head元素中.但有些兼容性问题我 ...

  6. javascript --- 原型初探七日谈(三)

    原型陷阱: 在处理原型问题上时,我们要注意两种行为. 1. 当我们对原型对象执行完全替换的时候,有可能会触发原型链的某种异常. 2. prototype.constructor 属性是不可靠的. 下面 ...

  7. Failed to connect to JobMonApp on port 13491

    今天为了解决别的问题,把/etc/hosts文件里的 127.0.0.1 localhost改成了 127.0.0.1 DSETL ,结果运行作业的时候就报这个错:Failed to connect ...

  8. MySQL 安装 启动 基本语法概述

    MySQL 安装 启动 基本语法概述 MySQL安装和配置 我是直接使用安装包:mysql-installer-community-5.6.10.1.msi 安装的时候其中有几点要注意: 1.记住端口 ...

  9. .framework使用注意、静态库配置及构架合成

    使用注意: 1.项目中使用的framework中包含了资源文件时,需要手动添加该framework中的资源文件 2.由于动态库(framework默认生成为动态库)不能上架,我们在生成的时候需要修改为 ...

  10. Android 视频播放器切换到下个视频时残留上个视频画面的解决办法

    最近在做一个Android视频播放器,遇到一个问题:切换到下一个视频时,中间会停留上一个视频的残存画面.   这是怎么回事?   我在网上找了很多资料,终于找到了原因:我是用自定义一个surfacev ...