2016-09-28 4 views
2

Ich habe versucht, Bild zu komprimieren, hat aber keinen Erfolg.Bildgröße reduzieren imagemagic

Blick auf mein kleines Experiment

  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 

Könnte jemand mir richtige Richtung?

Ich habe bereits einige Details hier ImageMagick: Lossless max compression for PNG?

Antwort

2

Es scheint, dass Sie Magick.NET verwenden. Diese Bibliothek hat eine Klasse namens ImageOptimizer, mit der die Datei verlustfrei komprimiert werden kann. Ein Beispiel dafür, wie Sie das verwenden können, finden Sie hier: 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); 

Es ist immer noch möglich, dass Ihre Datei kann nicht in der Größe reduziert werden, da es bereits mit der besten Kompression gespeichert.