您好我们在wpf页面上使用InkCanvas控件。我们正在数据库中保存Base64String字符串。见代码
private void submitButtonsCommand_Event(object sender)
{
byte[] sigByte;
InkCanvas icSignature = sender as InkCanvas;
using (var memoryStream = new MemoryStream())
{
icSignature.Strokes.Save(memoryStream);
sigByte = memoryStream.ToArray();
}
ServiceCallReportSignatureModel.SigCustomerSignature = Convert.ToBase64String(sigByte);
UpdateRecord();
}
当我们从数据库中检索数据并转换为FromBase64String时,在我们创建图像之后,我们就会收到错误。
public Image LoadImage(base64string)
{
//data:image/gif;base64,
//this image is a single pixel (black)
byte[] bytes = Convert.FromBase64String(base64string);
Image image;
using (MemoryStream ms = new MemoryStream(bytes))
{
image = Image.FromStream(ms);
}
return image;
}
我不知道为什么会这样。请帮我找出错误。 我们的BASE64字符串是: “AIwBAwxIEEWfARsCAAb / RjURAACAPx8JEQAAAAAAAPA / Cmwsh / EgR4kP + ETW / ojDWG7NZ8OZQxBN5otEzmU1mk04I7DnATcLHomzzUbxw / h3Dtp16yhlTQ2UsoTQh + uE64XgjsN6Js2UZpAZmFpmaZTKzzKZ4ctFmw3Mlmm0Bw9h / DtpTPKu79CYgm + VJqA =”
实际上我们正在从墨水画布控件中获取签名,我们希望在需要时以pdf格式显示。所以我们想要从base 64数据创建图像,但是我们得到了错误。
答案 0 :(得分:2)
StrokeCollection.Save(Stream)
方法不保存位图。取而代之的是,
Save方法将StrokeCollection保存为墨迹序列化格式(ISF)。
您可以通过将包含已保存数据的Stream
传递给StrokeCollection(Stream)
构造函数来恢复已保存的StrokeCollection。