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); } } }
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); }