【问题标题】:Plot image from BLOB/RAW从 BLOB/RAW 绘制图像
【发布时间】:2019-08-17 06:29:13
【问题描述】:

我正在尝试使用 ROracle 包从数据库中提取图像。图像以 BLOB 形式存储在数据库中。

我已经设法将图像以“原始”格式转换为 R。有没有办法将它从 raw 转换为 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])

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

【问题讨论】:

    标签: r blob roracle


    【解决方案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])
    

    【讨论】:

    • 很高兴听到!在 Oracle 数据库上使用odbc,如果不先转换为hex 而不是转换为raw,我永远无法取出blob。也许ROracle 会有所不同。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-08
    • 1970-01-01
    • 1970-01-01
    • 2020-03-31
    • 1970-01-01
    • 2021-04-24
    相关资源
    最近更新 更多