如何使用 FreeImagePlus 压缩 FIBITMAP?

How to compress FIBITMAP using FreeImagePlus?

我正在使用 FreeImagePlus/FreeImage。我想压缩位图而不使用 FreeImagePlus/FreeImage 将它们保存到 HDD(文件)。

给定的函数 FreeImage_save 确实会压缩,但其主要目的是将该图像保存到硬盘驱动器中的文件中。

我只对压缩感兴趣。我怎样才能做到这一点?

saveToMemory 函数可以完成这项工作。 Compress only可以通过compress and save to memory来实现,如下:

fipImage img;
img.load("file.jpg");       
if (!img.isValid()) 
    cout <<"could not read the input image" << endl;

//For compress only: save image to memory

fipMemoryIO memIO;

if(!img.saveToMemory(CompressionFormat[j], memIO, 0)); 
cout<< "could not compress image" << endl;

现在 memIO 包含以给定压缩格式保存的图像。

换句话说,来自内存的原始图像被压缩,输出(压缩图像)被放回内存。