Tengo un pequeño problema y no encuentro ninguna solución. Quiero convertir un GIF en un byte [] y luego volver a un GIF. Yo trabajo bien pero pierdo la animación.C# gif Imagen en MemoryStream y volver (perder animación)
Es un GIF perfectamente animado cuando comienzo (lo muestro en un elemento PictureBox
). Pero después de la conversión me quedo atascado con el primer fotograma.
HttpWebRequest httpWebRequest = (HttpWebRequest)HttpWebRequest.Create("creativetechs.com/i/tip_images/ExampleAnimation.gif");
HttpWebResponse httpWebReponse = (HttpWebResponse)httpWebRequest.GetResponse();
Stream stream = httpWebReponse.GetResponseStream();
Image img = Image.FromStream(stream);
MemoryStream ms = new MemoryStream();
img.Save(ms,img.RawFormat);
byte [] bytes = ms.ToArray();
Image img2 = Image.FromStream(new MemoryStream(bytes));
int frames1 = img.GetFrameCount(System.Drawing.Imaging.FrameDimension.Time);
int frames2 = img2.GetFrameCount(System.Drawing.Imaging.FrameDimension.Time);
También probé a utilizar no RawFormat pero System.Drawing.Imaging.ImageFormat.Gif
. No cambió nada. frames1
es el número correcto de marcos. frames2
es 1.
Tengo 2 PictureBox
elementos en mi GUI. Una mostrando img
y la otra img2
. Pero img2
no está animado, mientras que img
es. ¿Qué está mal?
También intenté usar la serialización para crear mi byte [].
serialicé la imagen y la deserialicé de nuevo y tampoco cambió nada. ¿Cómo es esto posible?
El codificador gdi GDI + no es compatible con SaveAdd() ni gifs animados. –
¿Ha considerado que puede ser un problema con el GIF? Acabo de probar tu código exacto con este [GIF] (http://www.creativetechs.com/iq/tip_images/ExampleAnimation.gif) y no funcionó. Ambos 'frames1' y' frames2' equivalen a 17. –
¿Y por qué puedo cargar y visualizar un gif animado desde un Web ResponseStream? –