C # gif Image в MemoryStream и обратно (потеря анимации)

У меня небольшая проблема, и я не нахожу решения. Я хочу преобразовать GIF в байт [], а затем обратно в GIF. У меня все работает нормально, но у меня пропадает анимация.

Когда я начинаю, это идеально анимированный GIF (я показываю его в элементе PictureBox ). Но после конвертации я застреваю на первом кадре.

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);

Я также пытался использовать не RawFormat, а System.Drawing.Imaging.ImageFormat.Gif . Ничего не изменил. frames1 - правильное количество кадров. frames2 равно 1.

У меня есть 2 элемента PictureBox в моем графическом интерфейсе. Один показывает img , а другой img2 . Но img2 не анимируется, а img - нет. Что не так?

Я также пытался использовать вместо этого сериализацию для создания моего байта [].

Я сериализовал изображение и снова десериализовал его, но это тоже ничего не изменило. Как это возможно?

13
задан Josh Darnell 6 January 2012 в 20:43
поделиться