Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
            }
        }