【发布时间】:2015-07-22 17:24:46
【问题描述】:
我正在努力从 SQL 数据库 (Windows SQL Server) 编写报告,这将要求某些人在将报告提交给客户之前签署报告。我们希望有一个系统,这些人可以在数据库中授权他们的签名,然后我们可以使用存储在数据库中的他们签名的图像并将其放在 LaTeX 生成的报告上。
签名图像被创建为 PNG,然后存储在数据库中类型为 varbinary 的字段中。为了在报告中使用签名,我需要将 PNG 重构为我可以在 LaTeX 中使用 \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 在this Gist 中定义(它们太长,无法放入此处允许的空间)
注意:db_pal 是一个原始向量的列表。另外,它明显不同于原始向量pal
> length(pal)
[1] 2471
> length(db_pal[[1]])
[1] 9951
有什么想法可以让我从数据库中取出这张图片吗?
【问题讨论】:
-
你知道图片的尺寸(逐列)吗?
-
587 像素宽 x 496 像素高。