2016-09-28 6 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 

Может ли один момент мне правильное направление?

Я уже прочитал некоторые подробности здесь ImageMagick: Lossless max compression for PNG?

ответ

2

кажется, что вы используете Magick.NET. Эта библиотека имеет класс 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); 

Это все еще возможно, что ваш файл не может быть уменьшен в размерах, так как он уже был сохранен с лучшим сжатием.

Смежные вопросы