Ver Mensaje Individual
  #1 (permalink)  
Antiguo 22/02/2018, 10:15
Altear
 
Fecha de Ingreso: febrero-2008
Mensajes: 69
Antigüedad: 16 años, 10 meses
Puntos: 0
Reducir peso de gif animado

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 { }
                }
__________________
Aprendiendo a programar

Agradezco comentarios ;)