Hola,
estoy haciendo una aplicacion de consola para reducir el peso de un directorio de imagenes. Funciona correctamente, pero con los gif animados elimina la animación.
¿Hay alguna manera de hacerlo sin perderla?
El código que estoy usando es éste:
Código:
string extension = Path.GetExtension(s);
ImageFormat formato = ImageFormat.Jpeg;
bool valido = false;
switch (extension.ToLower())
{
case ".jpg":
formato = ImageFormat.Jpeg;
valido = true;
break;
case ".gif":
formato = ImageFormat.Gif;
valido = true;
break;
case ".png":
formato = ImageFormat.Png;
valido = true;
break;
}
if (valido)
{
try
{
using (Image bmp1 = Image.FromFile(s))
{
ImageCodecInfo jpgEncoder = GetEncoder(formato);
// 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, 30L);
myEncoderParameters.Param[0] = myEncoderParameter;
bmp1.Save("C://Temp/auxiliar" + extension, jpgEncoder, myEncoderParameters);
}
File.Delete(s);
File.Move("C://Temp/auxiliar" + extension, s);
File.Delete("C://Temp/auxiliar" + extension);
}
catch { }
}