从BLOB / RAW绘制图像

时间:2019-03-26 18:59:32

标签: r blob roracle

我正在尝试使用ROracle软件包从数据库中提取图像。图像作为BLOB存储在数据库中。

我设法将图像转换为“原始”格式的R。有没有办法将其从原始格式转换为jpeg / png?

这是我到目前为止所拥有的:

con <- dbConnect(drv, username = user,
                 password = pw, dbname=connect.string)

query.string <- paste("select db.img",
                      "from database db",
                      "where db.id = '01234567')")

## run a SQL statement by first creating a resultSet object
rs <- dbSendQuery(con, query.string)
## fetch records from the resultSet into a data.frame
data <- fetch(rs)
## extract all rows
str(data)

> str(data)
'data.frame':   1 obs. of  1 variable:
 $ DATA:List of 1
  ..$ : raw  ff d8 ff e1 ...

理想情况下,我可以执行以下操作:

pic <- rawToJpeg(unlist(data)[1])

这将允许我绘制/保存图像

1 个答案:

答案 0 :(得分:1)

考虑使用writeBin将二进制数据传输到文件:

rawToJpeg <- function(pic_data) {
    f = file(paste0('output.jpeg'), "wb")           # OPEN FILE CONNECTION
    writeBin(pic_data, con = f, useBytes=TRUE)      # TRANSFER RAW DATA
    close(f)                                        # CLOSE FILE CONNECTION
}

rawToJpeg(unlist(data)[1])