Восстановить файл PNG, сохраненный как RAW в базе данных SQL
Я работаю над написанием отчета из базы данных SQL (Windows SQL Server), который потребует от определенных людей подписать отчет перед отправкой его клиенту. Мы надеемся создать систему, в которой эти люди смогут авторизовать свою подпись в базе данных, а затем мы сможем использовать изображение их подписи, сохраненное в базе данных, и поместить его в отчет, сгенерированный LaTeX.
Изображения подписи создаются в формате PNG, затем сохраняются в базе данных в поле с типомvarbinary
, Чтобы использовать подпись в отчете, мне нужно восстановить PNG в файл, с которым я могу\includegraphics
в латексе.
К сожалению, я не могу воссоздать PNG из базы данных. Поскольку я не могу опубликовать подпись, мы будем использовать изображение ниже в качестве примера.
С этим изображением на моем компьютере я могу прочитать файл в необработанном виде, записать его в другой файл и получить то же изображение при открытии нового файла.
#* 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)
Теперь я сохранил это изображение в базе данных и, используя RODBC, могу извлечь его так:
#*** 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)
Объектыpal
а такжеdb_pal
определены здесь вэтот гист (они слишком длинные, чтобы поместиться здесь в допустимом пространстве)
Замечания:db_pal
список одного необработанного вектора Кроме того, это явно отличается от необработанного вектораpal
> length(pal)
[1] 2471
> length(db_pal[[1]])
[1] 9951
Любые мысли о том, что мне, возможно, нужно сделать, чтобы вытащить это изображение из базы данных?