我希望将原始的RGB图像数据(如果需要,可以添加BMP头)转换为JPEG格式,但是不想使用DLL。在Windows上是否有可能实现这一点?我尝试了静态编译IJG jpeglib,但是我使用的是VC++ 9,而它只适用于VC++ 10。
是的,你可以编写自己的JPEG编码器或使用其他库,例如OpenCV。但是在静态链接它们时,请注意其许可要求。
参考实现是免费提供的,可用于任何类型的项目。
此外,您可以使用GDI+编写JPEG图像(无需任何Windows没有的额外库)。
为此,创建一个Bitmap
,LockBits
以获取可写指针,写入数据,然后UnlockBits
。
如果图像是从OpenGL中捕获的,则必须RotateFlip
它,否则它将颠倒。
现在创建并初始化一个PropertyItem
,填写元数据,然后在Bitmap
上SetPropertyItem
。
创建并初始化一个EncoderParameters
,在这里设置质量等参数。
最后,在Bitmap
上调用Save
。