如何将GIF动画转换为Base64字符串并返回GIF动画?

时间:2014-08-27 20:10:52

标签: string base64 gif

我正在尝试编写代码将GIF annimation文件转换为base64字符串,然后将其从base 64字符串转换回图像。我编写的代码用于标准图像文件(即Bitmap,JPEG,GIF)。然而,动画GIF是不同的,显然需要不同的步骤。

以下是我为将图像转换为base64字符串而编写的代码:

    if (pbTitlePageImage.Image != null)
            {
                // This is the step-by-step for writing an image to binary.
                string Image2BConverted;
                using (Bitmap bm = new Bitmap(pbTitlePageImage.Image))
                {
                    using (MemoryStream ms = new MemoryStream())
                    {
                        BinaryWriter bw = new BinaryWriter(ms);
                        bm.Save(ms, ImageFormat.Jpeg);
                        Image2BConverted = Convert.ToBase64String(ms.ToArray());
                        GameInfo.TitlePageImage = Image2BConverted;
                        bw.Close();
                        ms.Close();
                        GameInfo.TitlePageImagePresent = true;
                        ProjectNeedsSaving = true;
                    }
                }
            }

这是我编写的用于将base64字符串转换回图像的代码:

        {
            byte[] TitlePageImageBuffer = Convert.FromBase64String(GameInfo.TitlePageImage);
            MemoryStream memTitlePageImageStream = new MemoryStream(TitlePageImageBuffer, 0, TitlePageImageBuffer.Length);
            memTitlePageImageStream.Write(TitlePageImageBuffer, 0, TitlePageImageBuffer.Length);
            memTitlePageImageStream.Position = 0;

            pbTitlePageImage.Image = Bitmap.FromStream(memTitlePageImageStream, true);

            memTitlePageImageStream.Close();
            memTitlePageImageStream = null;
            TitlePageImageBuffer = null;
        }

将base64字符串转换回图像后,必须将其加载到图片框中。上面的代码示例将起作用,但只有动画链中的第一个图像才能通过,因此它是图片框中出现的动画的唯一部分。我需要编写将处理整个动画的代码。提前谢谢!

1 个答案:

答案 0 :(得分:0)

我找到了解决问题的方法:

byte[] imageByte = Base64.decodeBase64(imageData.getImageBase64());
new FileOutputStream("image2.gif");
write(imageByte);
close();

我不知道为什么,但是使用FileOutput String我可以获得一个包含完整动画的文件。