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 に答える