Si, lo que sucede es que el GDI no guarda los jpgs con la máxima calidad posible, por ende, se ven bastante feos si son grandes, básicamente necesitas obtener los CODECS(compression/decompression) para el formato y después, establecer la calidad, de modo que la forma en la que guardas la imagen cambiará un poco.
Necesitarás utilizar System.Drawing y System.Drawing.Imaging
Te dejo un ejemplo rápido (C#):
Código:
public virtual ImageCodecInfo GetImageCodec(string imageType)
{
ImageCodecInfo[] arrayICI = ImageCodecInfo.GetImageEncoders();
ImageCodecInfo codecType = null;
for (int x = 0; x < arrayICI.Length; x++)
{
if (arrayICI[x].FormatDescription.Equals(imageType))
{
codecType = arrayICI[x];
break;
}
}
return codecType;
}
public virtual EncoderParameters GetEncoderParameters()
{
//Set default quality for images
System.Drawing.Imaging.EncoderParameters encoderParams = new System.Drawing.Imaging.EncoderParameters();
//0 - 100 Highest possible quality
long[] quality = new long[1];
quality[0] = Convert.ToInt16(System.Configuration.ConfigurationSettings.AppSettings["ImageQuality"].ToString());
System.Drawing.Imaging.EncoderParameter encoderParam = new System.Drawing.Imaging.EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality);
//System.Drawing.Imaging.Encoder.
encoderParams.Param[0] = encoderParam;
//End Quality
return encoderParams;
}
Código:
outBitmap.Save( thumbnailStream, image.GetImageCodec("JPEG"), encoderParams );
Donde:
- outBipmap es mi mapa de bits
- thumbnailStream es mi stream
- Utilizo una clase image para y los métodos son los de arriba.
Saludos
[EDIT]Ten cuidado con la calidad de la image, yo nunca la pude establecer a 100, la dejé en 95 en el webconfig[/EDIT]