GDI + - 将位图像素转换为JPG格式

时间:2015-01-14 16:52:33

标签: c++ bitmap gdi+

我有一个位图像素数组。如何将它们转换为JPG格式并复制到另一个数组?如何将它们从JPG像素转换回位图?

2 个答案:

答案 0 :(得分:3)

从此处查看编码器CLSID功能:http://msdn.microsoft.com/en-us/library/windows/desktop/ms533843(v=vs.85).aspx

修改了https://vctipsplusplus.wordpress.com/tag/image-conversion-gdi/的原始代码:

int main()
{
   // Initialize GDI+.
   GdiplusStartupInput gdiplusStartupInput;
   ULONG_PTR gdiplusToken;
   GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
   CLSID   encoderClsid;
   Status  stat;
   Image*   image = new Image(L”Bird.bmp”);
   // Get the CLSID of the JPEG encoder.
   GetEncoderClsid(L”image/jpeg”, &encoderClsid);
   stat = image->Save(L”Bird.png”, &encoderClsid, NULL);
   if(stat == Ok)
      printf(“Bird.png was saved successfully\n”);
   else
      printf(“Failure: stat = %d\n”, stat);
   delete image;
   GdiplusShutdown(gdiplusToken);
   return 0;
}

只需将image / jpeg更改为您想要转换的格式。详细信息在我上面提到的MSDN链接上给出。当然要使用像素,您需要将JPEG转换为BMP

答案 1 :(得分:2)

您可以使用CreateStreamOnHGlobalSHCreateMemStream创建内存流,然后使用GDI +方法Image.Save保存到流中。撤消要回读的过程。