我正在尝试编写代码将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字符串转换回图像后,必须将其加载到图片框中。上面的代码示例将起作用,但只有动画链中的第一个图像才能通过,因此它是图片框中出现的动画的唯一部分。我需要编写将处理整个动画的代码。提前谢谢!
答案 0 :(得分:0)
我找到了解决问题的方法:
byte[] imageByte = Base64.decodeBase64(imageData.getImageBase64());
new FileOutputStream("image2.gif");
write(imageByte);
close();
我不知道为什么,但是使用FileOutput String我可以获得一个包含完整动画的文件。