我想加载一个BMP文件,在内存中对它进行一些操作,并在Windows上使用C++输出一个新的BMP文件(Win32 native).我知道ImageMagick和它的C++绑定Magick ++,但我认为这对于这个项目来说太过分了,因为我目前对其他文件格式或平台不感兴趣.
在读取和写入BMP文件的代码设置方面,最简单的方法是什么?答案可能是"只使用Magick ++,这是最简单的."
相关问题:什么是最好的图像处理库?
在为Windows开发时,我通常只使用ATL CImage类
EasyBMP如果你想要bmp支持.我很简单,可以在几分钟内开始使用,如果您需要它,它就是多平台.
BMP文件由3个结构组成.BITMAPFILEHEADER后跟一个BITMAPINFO,后跟一个字节数组.
使用Win32加载BMP文件的绝对最简单的方法是调用CreateFile,GetFileSize,ReadFile和CloseHandle将文件图像加载到内存中,然后将指向缓冲区的指针转换为BITMAPFILEHEADER并从那里开始.
我撒谎,更简单的方法是调用LoadImage.确保传递LR_DIBSECTION标志以确保GDI不会将加载的图像转换为主显示器配置的任何bitdepth.这样做的好处是可以为您提供一个可以选择DC的HBITMAP,因此可以使用GDI进行全局绘制.
但是要保存它,没有捷径.您需要准备一个BITMAPFILEHEADER,写出来,填写BITMAPINFO结构,写出来,然后是实际的像素数据.