0

我正在使用 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 且没有明显差异?

提前致谢。

4

1 回答 1

1

您将压缩定义为一个比率,JP2 将达到 16:1。

这是一种有损压缩,因此并非所有图像都能以相同的压缩比实现相同的美学质量。这取决于图像的内容。

要设置它,只需传入整数值 1 - 16 并将其转换为,

FreeImage.Save(FREE_IMAGE_FORMAT.FIF_JP2, dib, newName, (FREE_IMAGE_SAVE_FLAGS)Properties.Settings.Default.JPEG2000CompressionRateXto1);
于 2014-05-20T19:38:49.913 回答