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