Spesso capita di dover lavorare con delle immagini e di volerle salvare nel formato più comune per il web il jpg, usando i parametri standard dell'oggetto image il risultato però non è ottimale. La funzione Save() ha un paio di interessanti parametri EncoderParameters e ImageCodecInfo che possono venirci in aiuto.
Usando queste semplici funzioni possiamo salvare l'immagine specificando il rapporto di compressione (da 0 a 100) come faremmo con photoshop o qualsiasi altro programma di grafica
Image image = Bitmap.FromFile("C:\\immagine.jpg");
// SALVO L'IMMAGINE CON UN RAPPORTO DI COMPRESSIONE DEL 75%
SaveJPG(image, "C:\\output.jpg", 75);
private 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;
}
public static void SaveJPG(Image image, string fileName, long compression)
{
EncoderParameters eps = new EncoderParameters(1);
eps.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, compression);
ImageCodecInfo ici = GetEncoderInfo("image/jpeg");
image.Save(fileName, ici, eps);
}