2016-09-28 4 views
2

イメージを圧縮しようとしましたが、成功しませんでした。私の小さな実験イメージサイズを小さくするimagemagic

  var results = new Dictionary<int, int>(); 
      for (int i = 0; i <= 100; i++) 
      { 
       var stream = new MemoryStream(); 
       image.Quality = i; 
       image.CompressionMethod = CompressionMethod.Zip; 
       image.Write(stream, MagickFormat.Png); 
       results[i] = stream.GetBuffer().Length; 
       stream.Flush(); 
      } 

      var best = results.OrderBy(e => e.Value).First(); 
      // the same length as for original image. quality doesn't work in this example - dictionary values are identical 

ルックは、いずれも正しい方向に私を指すもらえますか?

私はすでにあなたがMagick.NETを使用していると思われ、ここでImageMagick: Lossless max compression for PNG?

答えて

2

をいくつかの詳細を読みました。そのライブラリにはImageOptimizerというクラスがあり、これを使用してファイルを可逆圧縮することができます。どのように使用できるかの例は、https://magick.codeplex.com/wikipage?title=Lossless%20compression&referringTitle=Documentationです。

FileInfo snakewareLogo = new FileInfo(@"c:\Snakeware.png"); 

Console.WriteLine("Bytes before: " + snakewareLogo.Length); 

ImageOptimizer optimizer = new ImageOptimizer(); 
optimizer.LosslessCompress(snakewareLogo); 

snakewareLogo.Refresh(); 
Console.WriteLine("Bytes after: " + snakewareLogo.Length); 

それはすでに最高の圧縮で保存されているので、あなたのファイルのサイズを小さくすることができないことも可能です。

関連する問題