【发布时间】:2011-07-08 01:19:15
【问题描述】:
我想在 Windows 上将原始 RGB 图像数据(如有必要,我可以添加 BMP 标头)转换为 JPEG。没有DLL可以这样做吗? 我尝试静态编译 IJG jpeglib,但我有 VC++ 9,它只适用于 VC++ 10
【问题讨论】:
我想在 Windows 上将原始 RGB 图像数据(如有必要,我可以添加 BMP 标头)转换为 JPEG。没有DLL可以这样做吗? 我尝试静态编译 IJG jpeglib,但我有 VC++ 9,它只适用于 VC++ 10
【问题讨论】:
使用 GDI+ 将图像保存到文件中。例如,请参阅http://msdn.microsoft.com/en-us/library/ms535407(VS.85).aspx 了解如何保存到文件。指定 JPEG 编码器。要将图像加载到 Image 类中,可以使用 Bitmap 类(继承自 Image)。有几种方法可用:http://msdn.microsoft.com/en-us/library/ms536286(VS.85).aspx。
GDI+ 随 Windows XP 和更新版本一起提供,并且可以为旧的 Windows 版本重新分发。所以你可能不需要捆绑任何更新的东西。
【讨论】:
是的,要么编写自己的 JPEG 编码器,要么使用其他库,例如 OpenCV。静态链接时只需注意其许可要求
【讨论】:
reference implementation 可免费用于任何类型的项目。
此外,您可以使用 GDI+ 编写 JPEG 图像(无需任何 Windows 还没有的额外库)。
为此,创建Bitmap、LockBits 以获取可写指针、写入数据和UnlockBits。
如果图像是从 OpenGL 捕获的,则必须 RotateFlip 它,否则它会颠倒过来。
现在创建一个PropertyItem 并填写元数据,然后在Bitmap 上填写SetPropertyItem。
创建并初始化一个EncoderParameters,在这里你可以设置质量等等。
最后,在您的Bitmap 上致电Save。
【讨论】: