Tôi có một vấn đề nhỏ và tôi không tìm thấy bất kỳ giải pháp nào. Tôi muốn chuyển đổi GIF thành một byte [] và sau đó quay lại GIF. Tôi làm việc tốt nhưng tôi mất hoạt hình.C# gif Hình ảnh tới MemoryStream và ngược lại (mất hoạt ảnh)
Đó là GIF động hoàn hảo khi tôi bắt đầu (tôi hiển thị nó trong phần tử PictureBox
). Nhưng sau khi chuyển đổi tôi gặp khó khăn với khung hình đầu tiên.
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);
Tôi cũng đã cố gắng không sử dụng RawFormat nhưng System.Drawing.Imaging.ImageFormat.Gif
. Không thay đổi gì cả. frames1
là số lượng khung hình phù hợp. frames2
là 1.
Tôi có 2 PictureBox
yếu tố trong GUI của mình. Một hiển thị img
và img2
khác. Nhưng img2
không hoạt ảnh trong khi img
là. Chuyện gì thế?
Tôi cũng đã cố gắng sử dụng serialization thay vì tạo byte của tôi [].
Tôi đã tuần tự hóa hình ảnh và deserialized nó một lần nữa và nó đã không thay đổi bất cứ điều gì cả. Sao có thể như thế được?
Bộ mã hóa gif GDI + không hỗ trợ SaveAdd() cũng như các hình động. –
Bạn có cho rằng đó có phải là vấn đề với GIF không? Tôi vừa thử mã chính xác của bạn với [GIF] này (http://www.creativetechs.com/iq/tip_images/ExampleAnimation.gif) và nó không hoạt động. Cả hai 'frame1' và' frames2' bằng 17. –
Và tại sao tôi có thể tải và hình dung một gif động từ Web ResponseStream? –