使用R从SQL Server数据库导入并显示jpeg

问题描述

工作要求我们从SQL Server数据库中导入一系列jpeg文件,以显示在我们拥有的仪表板产品上。我们正在使用R查询数据库并构建仪表板,因此我们需要能够从SQL Server导入图像并将其显示(或至少导出到本地系统文件夹)。

我们可以下拉并显示标准表信息,例如文件名,文件大小,文件类型和文件数据<raw>,但是我们很难理解如何提取和显示jpeg文件。

table of image details

我知道它们以varbinary列类型存储在数据库中,但是没有文件路径的话,标准的read / writeJPEG()似乎不喜欢任何东西,例如,直接从SQL中提取数据将服务器数据库放入r。

尝试将单个文件导出以导出到本地文件夹,但是加载图像时遇到同样的问题。

关于如何进行的任何建议?

解决方法

jpeg::readJPEG函数表示它可以从原始向量读取,并且您似乎在data.frame中包含原始向量。因此,尝试类似

jpeg::readJPEG(dd$FileData[[1]])

对于可重现的示例,下面的示例从jpeg包中读取示例图像作为原始矢量,然后将其转换为图像对象

#sample data
fname <- system.file("img","Rlogo.jpg",package="jpeg")
filedataraw <- readBin(fname,"raw",file.info(fname)$size)

现在,我们已经创建了一个示例原始向量(类似于大概存储在您的数据框中的原始向量),我们可以使用jpeg库解析图像数据

img <- jpeg::readJPEG(filedataraw)
plot(1:2,type='n')
rasterImage(img,1.2,1.27,1.8,1.73)

如果目标只是写入文件,则根本不需要将文件解析为JPEG。您只需将字节写入磁盘。

writeBin(filedataraw,"sample.jpeg")

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...