2016-12-31 6 views
-1

Hallo, wir verwenden InkCanvas-Steuerelement auf der wpf-Seite. Und wir speichern die Base64String-Zeichenfolge in der Datenbank. Siehe CodeFehler von der InkCanvase-Basis erhalten 64 Zeichenfolge

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(); 
    } 

Und wenn wir Abrufen von Daten aus der Datenbank und die Umwandlung in die FromBase64String und danach, wenn wir Bild erzeugen dann werden wir den Fehler.

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; 
} 

Ich weiß nicht, warum das auftritt. Bitte helfen Sie mir, den Fehler zu finden. Unsere base64 String lautet: "AIwBAwxIEEWfARsCAAb/RjURAACAPx8JEQAAAAAAAPA/Cmwsh/EgR4kP + tw/ojDWG7NZ8OZQxBN5otEzmU1mk04I7DnATcLHomzzUbxw/h3Dtp16yhlTQ2UsoTQh + uE64XgjsN6Js2UZpAZmFpmaZTKzzKZ4ctFmw3Mlmm0Bw9h/DtpTPKu79CYgm + VJqA ="

Eigentlich sind wir Unterschrift von der Tinten Leinwand Kontrolle zu nehmen und wir wollen in anzuzeigen das pdf, wenn wir brauchen. Wir wollen also ein Bild von den 64 Basisdaten erstellen, aber wir bekommen den Fehler.

+0

welcher Fehler/Ausnahme erhalten Sie? –

+0

Wir bekommen einen Fehler bei der Dateninkonsistenz. –

+0

Offensichtlich wird das nicht funktionieren. Während Sie eine StrokeCollection in [* Ink Serialized Format *] (https://msdn.microsoft.com/en-us/library/ms590544 (v = vs.110) .aspx) speichern, versuchen Sie eine Bitmap zu lesen . Das sind zwei völlig verschiedene Dinge. – Clemens

Antwort

2

Die StrokeCollection.Save(Stream) Methode speichert keine Bitmap. Stattdessen

Die Save-Methode speichert die StrokeCollection als Ink Serialized Format (ISF).

Sie können die gespeicherte Stroke wiederherstellen, indem Sie einen Stream mit den gespeicherten Daten an den StrokeCollection(Stream) Konstruktor übergeben.

+0

Kann ich ein Image aus den FileStream-Daten erstellen? Und wie kann man FileStream-Daten in der Datenbank speichern? Müssen wir eine Basis-64-Zeichenfolge von FileStream-Daten generieren? Und wir wollen kein Bild erstellen, wenn wir die Signatur erfassen. Wir möchten ein Bild erstellen, wenn wir es brauchen. Ist das möglich und wie? –

+0

Eigentlich nehmen wir die Unterschrift aus der Ink-Canvas-Steuerung und möchten sie in der PDF-Datei anzeigen, wenn wir sie brauchen. –

Verwandte Themen