public bool Optimize(Stream stream, ImageOptimizationMode optimizationMode) { if (stream.CanSeek && stream.CanRead) { if (optimizationMode != ImageOptimizationMode.None) { ImageMagick.ImageOptimizer optimizer = new ImageMagick.ImageOptimizer { IgnoreUnsupportedFormats = true }; if (optimizationMode == ImageOptimizationMode.Maximum) { optimizer.OptimalCompression = true; } bool result; if (optimizationMode == ImageOptimizationMode.Lossless) { result = optimizer.LosslessCompress(stream); } else { result = optimizer.Compress(stream); } return(result); } } return(false); }
public bool Optimize(Stream stream, ImageOptimizationMode optimizationMode) { if (stream.CanRead && stream.CanSeek) { WuQuantizer quantizer = new WuQuantizer(); using (Bitmap bitmap = (Bitmap)Image.FromStream(stream)) { using (Image quantized = quantizer.QuantizeImage(bitmap)) { stream.Seek(0, SeekOrigin.Begin); stream.SetLength(0); quantized.Save(stream, System.Drawing.Imaging.ImageFormat.Png); } } return(true); } return(false); }
public static bool Optimize(this IImageOptimizer imageOptimizer, string inputFilePath, string outputFilePath, ImageOptimizationMode optimizationMode) { using (MemoryStream ms = new MemoryStream()) { using (FileStream inputStream = new FileStream(inputFilePath, FileMode.Open, FileAccess.Read)) inputStream.CopyTo(ms); ms.Seek(0, SeekOrigin.Begin); bool success = imageOptimizer.Optimize(ms, optimizationMode); if (success) { ms.Seek(0, SeekOrigin.Begin); using (FileStream outputStream = new FileStream(outputFilePath, FileMode.Create, FileAccess.Write)) ms.CopyTo(outputStream); } return(success); } }