Te damos la bienvenida a proyecto on line, en este lugar vas a hallar la respuesta de lo que buscas.
Solución:
De: http://msdn.microsoft.com/en-us/library/system.drawing.imaging.encoderparameter.aspx
private void VaryQualityLevel()
// Get a bitmap.
Bitmap bmp1 = new Bitmap(@"c:TestPhoto.jpg");
ImageCodecInfo jpgEncoder = GetEncoder(ImageFormat.Jpeg);
// Create an Encoder object based on the GUID
// for the Quality parameter category.
System.Drawing.Imaging.Encoder myEncoder =
System.Drawing.Imaging.Encoder.Quality;
// Create an EncoderParameters object.
// An EncoderParameters object has an array of EncoderParameter
// objects. In this case, there is only one
// EncoderParameter object in the array.
EncoderParameters myEncoderParameters = new EncoderParameters(1);
EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder,
50L);
myEncoderParameters.Param[0] = myEncoderParameter;
bmp1.Save(@"c:TestPhotoQualityFifty.jpg", jpgEncoder,
myEncoderParameters);
myEncoderParameter = new EncoderParameter(myEncoder, 100L);
myEncoderParameters.Param[0] = myEncoderParameter;
bmp1.Save(@"c:TestPhotoQualityHundred.jpg", jpgEncoder,
myEncoderParameters);
// Save the bitmap as a JPG file with zero quality level compression.
myEncoderParameter = new EncoderParameter(myEncoder, 0L);
myEncoderParameters.Param[0] = myEncoderParameter;
bmp1.Save(@"c:TestPhotoQualityZero.jpg", jpgEncoder,
myEncoderParameters);
...
private ImageCodecInfo GetEncoder(ImageFormat format)
ImageCodecInfo[] codecs = ImageCodecInfo.GetImageDecoders();
foreach (ImageCodecInfo codec in codecs)
if (codec.FormatID == format.Guid)
return codec;
return null;
Utilizo esta extensión simple para convertir una transmisión, todo lo que hace es convertirla y no hace nada por la calidad.
public static Stream ConvertImage(this Stream originalStream, ImageFormat format)
var image = Image.FromStream(originalStream);
var stream = new MemoryStream();
image.Save(stream, format);
stream.Position = 0;
return stream;
uso:
var outputStream = gifStream.ConvertImage(ImageFormat.Png);
Windows GDI+ proporciona la clase de imagen y la clase de mapa de bits para almacenar imágenes en la memoria y manipular imágenes en la memoria. GDI+ escribe imágenes en archivos de disco con la ayuda de codificadores de imágenes y carga imágenes desde archivos de disco con la ayuda de decodificadores de imágenes.
Verifique las sobrecargas de Image.Save Method para implementar su funcionalidad. que admiten varios formatos de imagen de tipo ImageFormat Class.
siga el ejemplo en Image.Save Method (String, ImageCodecInfo, EncoderParameters), que le permitirá guardar Jpg
archivo con codificación, etc.
fragmento de código:
using System;
using System.Drawing;
using System.Drawing.Imaging;
class Example_SetJPEGQuality
public static void Main()
Bitmap myBitmap;
ImageCodecInfo myImageCodecInfo;
Encoder myEncoder;
EncoderParameter myEncoderParameter;
EncoderParameters myEncoderParameters;
// Create a Bitmap object based on a BMP file.
myBitmap = new Bitmap("Shapes.bmp");
// Get an ImageCodecInfo object that represents the JPEG codec.
myImageCodecInfo = GetEncoderInfo("image/jpeg");
// Create an Encoder object based on the GUID
// for the Quality parameter category.
myEncoder = Encoder.Quality;
// Create an EncoderParameters object.
// An EncoderParameters object has an array of EncoderParameter
// objects. In this case, there is only one
// EncoderParameter object in the array.
myEncoderParameters = new EncoderParameters(1);
// Save the bitmap as a JPEG file with quality level 25.
myEncoderParameter = new EncoderParameter(myEncoder, 25L);
myEncoderParameters.Param[0] = myEncoderParameter;
myBitmap.Save("Shapes025.jpg", myImageCodecInfo, myEncoderParameters);
// Save the bitmap as a JPEG file with quality level 50.
myEncoderParameter = new EncoderParameter(myEncoder, 50L);
myEncoderParameters.Param[0] = myEncoderParameter;
myBitmap.Save("Shapes050.jpg", myImageCodecInfo, myEncoderParameters);
// Save the bitmap as a JPEG file with quality level 75.
myEncoderParameter = new EncoderParameter(myEncoder, 75L);
myEncoderParameters.Param[0] = myEncoderParameter;
myBitmap.Save("Shapes075.jpg", myImageCodecInfo, myEncoderParameters);
// Información del códec
private static ImageCodecInfo GetEncoderInfo(String mimeType)
int j;
ImageCodecInfo[] encoders;
encoders = ImageCodecInfo.GetImageEncoders();
for(j = 0; j < encoders.Length; ++j)
if(encoders[j].MimeType == mimeType)
return encoders[j];
return null;
Espero que esto ayude..
Si piensas que te ha resultado de utilidad este post, te agradeceríamos que lo compartas con otros programadores y nos ayudes a dar difusión a esta información.