从inkcanvase base 64字符串中获取错误

时间:2016-12-31 07:27:23

标签: c# wpf

您好我们在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数据创建图像,但是我们得到了错误。

1 个答案:

答案 0 :(得分:2)

StrokeCollection.Save(Stream)方法不保存位图。取而代之的是,

  

Save方法将StrokeCollection保存为墨迹序列化格式(ISF)。

您可以通过将包含已保存数据的Stream传递给StrokeCollection(Stream)构造函数来恢复已保存的StrokeCollection。