我使用FreeImageNet.dll使用各种FREE_IMAGE_LOAD_FLAGS来压缩j2k文件(100KB)。
示例代码在这里。
string fileName=abc.jpg;
string outFileName=xyz.j2k;
FREE_IMAGE_FORMAT imageFormat = FREE_IMAGE_FORMAT.FIF_J2K;
dib = new FIBITMAP();
dib = FreeImage.LoadEx(fileName, FREE_IMAGE_LOAD_FLAGS.DEFAULT);
FreeImage.SaveEx(dib, outFileName, imageFormat,FREE_IMAGE_SAVE_FLAGS.JPEG_QUALITYSUPERB);
dib.SetNull();
我得到了7KB压缩文件,在原始图像和压缩图像之间可以看到差异。
如何将图像压缩到30 KB,没有明显差异?
提前致谢。
答案 0 :(得分:1)
您将压缩定义为比率,JP2最多可以达到16:1。
这是一种有损压缩,因此并非所有图像都能在相同的压缩比下达到相同的美学质量。这取决于图像的内容。
设置只传入整数值1 - 16并将其转换为
FreeImage.Save(FREE_IMAGE_FORMAT.FIF_JP2, dib, newName, (FREE_IMAGE_SAVE_FLAGS)Properties.Settings.Default.JPEG2000CompressionRateXto1);