public static void SaveGIF(this Image img, Stream stream, GIFQuality quality)
        {
            if (quality == GIFQuality.Default)
            {
                img.Save(stream, ImageFormat.Gif);
            }
            else
            {
                Quantizer quantizer;
                switch (quality)
                {
                case GIFQuality.Grayscale:
                    quantizer = new GrayscaleQuantizer();
                    break;

                case GIFQuality.Bit4:
                    quantizer = new OctreeQuantizer(15, 4);
                    break;

                case GIFQuality.Bit8:
                default:
                    quantizer = new OctreeQuantizer(255, 4);
                    break;
                }

                using (Bitmap quantized = quantizer.Quantize(img))
                {
                    quantized.Save(stream, ImageFormat.Gif);
                }
            }
        }
Ejemplo n.º 2
0
    public MemoryStream Resize()
    {
        //salva su memorystream un'immagine ridimensionandola

        if (rImage == null)
        {
            throw new System.ApplicationException("Image not loaded!");
        }

        MemoryStream memorystream = new MemoryStream();

        ByteSize = 0;
        try
        {
            System.Drawing.Image    thumbnail = new Bitmap(thumbWidth, thumbHeight);
            System.Drawing.Graphics graphic   = System.Drawing.Graphics.FromImage(thumbnail);
            if (HighQuality)
            {
                graphic.InterpolationMode  = Filter;
                graphic.SmoothingMode      = SmoothingMode.HighQuality;
                graphic.PixelOffsetMode    = PixelOffsetMode.HighQuality;
                graphic.CompositingQuality = CompositingQuality.HighQuality;
            }
            else
            {
                graphic.InterpolationMode  = InterpolationMode.Low;
                graphic.SmoothingMode      = SmoothingMode.HighSpeed;
                graphic.PixelOffsetMode    = PixelOffsetMode.HighSpeed;
                graphic.CompositingQuality = CompositingQuality.HighSpeed;
            }
            graphic.DrawImage(rImage, 0, 0, thumbWidth, thumbHeight);


            /* EVENTUALI OPERAZIONI SULL'IMMAGINE QUI... */

            EncoderParameters encoderParameters;
            encoderParameters = new EncoderParameters(1);
            ImageCodecInfo[] info = ImageCodecInfo.GetImageEncoders();

            switch (FileType)
            {
            case "gif":         //       info[2]
                if (GifDepth != 0)
                {
                    /* VERSIONE PER ASP
                     * Quantizer quantizer = new OctreeQuantizer(GifPalette, GifDepth);
                     * using (Bitmap quantized = quantizer.Quantize(thumbnail))
                     * { quantized.Save(memorystream, ImageFormat.Gif); }*/
                    /* VERSIONE GENERALE */
                    Quantizer quantizer;
                    if (GifDepth == 255)
                    {
                        quantizer = new GrayscaleQuantizer();
                    }
                    else
                    {
                        quantizer = new OctreeQuantizer(GifPalette, GifDepth);
                    }
                    using (Bitmap quantized = quantizer.Quantize(thumbnail))
                    { quantized.Save(memorystream, ImageFormat.Gif); }
                }
                else
                {
                    thumbnail.Save(memorystream, System.Drawing.Imaging.ImageFormat.Gif);
                }
                break;

            case "png":         //       info[4]
                thumbnail.Save(memorystream, System.Drawing.Imaging.ImageFormat.Png);
                break;

            case "bmp":         //       info[0]
                thumbnail.Save(memorystream, System.Drawing.Imaging.ImageFormat.Bmp);
                break;

            case "tiff":         //      info[3]
                encoderParameters.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Compression, TiffCompress ? (long)EncoderValue.CompressionLZW : (long)EncoderValue.CompressionNone);
                thumbnail.Save(memorystream, info[3], encoderParameters);
                break;

            default:         //jpeg      info[1]
                encoderParameters.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, JpegQuality);
                thumbnail.Save(memorystream, info[1], encoderParameters);
                break;
            }
            ByteSize = memorystream.Length;
            graphic.Dispose();
            graphic = null;
            thumbnail.Dispose();
            thumbnail = null;
        }
        catch
        {
            throw new System.ApplicationException("Unable to resize the image");
        }
        return(memorystream);
    }