Stellen Sie die PNG-Datei wieder her, die als RAW in der SQL-Datenbank gespeichert ist

Ich arbeite daran, einen Bericht aus einer SQL-Datenbank (Windows SQL Server) zu erstellen, bei dem bestimmte Personen den Bericht signieren müssen, bevor er an den Client gesendet wird. Wir hoffen auf ein System, mit dem diese Personen ihre Unterschrift in der Datenbank autorisieren können. Anschließend können wir ein in der Datenbank gespeichertes Abbild ihrer Unterschrift verwenden und in den von LaTeX erstellten Bericht einfügen.

Die Signaturbilder werden als PNGs erstellt und in der Datenbank in einem Feld vom Typ @ gespeichervarbinary. Um die Signatur im Bericht verwenden zu können, muss ich das PNG in eine Datei umwandeln, die ich mit @ erstellen kan\includegraphics in LaTeX.

Leider kann ich die PNGs nicht aus der Datenbank wiederherstellen. Da ich keine Signatur posten kann, verwenden wir das folgende Bild als Beispiel.

Mit diesem Bild auf meinem Computer kann ich die Datei als unformatiert lesen, in eine andere Datei schreiben und beim Öffnen der neuen Datei dasselbe Bild erhalten.

#* It works to read the image from a file and rewrite it elsewhere
pal <- readBin("C:/[filepath]/ColorPalette.png",
          what = "raw", n = 1e8)
writeBin(pal,
         "C:/[filepath]/colors.png",
         useBytes=TRUE)

Jetzt habe ich dasselbe Bild in der Datenbank gespeichert und mit RODBC kann ich es folgendermaßen extrahieren:

#*** Capture the raw from the database
con <- odbcConnect("DATABASE")
Users <- sqlQuery(con, "SELECT * FROM dbo.[User]")

db_pal <- Users$Signature[Users$LastName == "MyName"]

#*** Write db_pal to a file, but the image won't render
#*** Window Photo Viewer can't open this picture because the file appears to be damaged, corrupted, or is too large (12KB)

writeBin(db_pal[[1]],
         "C:/[filename]/db_colors.png",
         useBytes=TRUE)

Die Objektepal unddb_pal sind hier in @ definiedieser Kern (sie sind zu lang, um hier in den zulässigen Platz zu passen)

Hinweis:db_pal ist eine Liste von einem Rohvektor. Auch ist es deutlich anders als der rohe Vektorpal

> length(pal)
[1] 2471
> length(db_pal[[1]])
[1] 9951

Überlegen Sie, was ich möglicherweise tun muss, um dieses Bild aus der Datenbank zu entfernen?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage