我需要一个图像的MIME类型和原始向量上传到我正在使用的API.我想用magick
包来做这件事,但我不知道如何从一个神奇的物体中得到一个合适的原始向量.这就是我读入图片并获取MIME类型的方法:
library(magick)
example_image <- "https://i.stack.imgur.com/H5yfi.jpg?s=256&g=1"
img <- image_read(example_image)
image_mimetype <- paste0("image/", tolower(image_info(img)$format))
image_mimetype
#> [1] "image/jpeg"
我目前的解决方法(可行)是将magick
对象保存到磁盘,并再次将文件作为原始文件读入:
tmp <- tempfile()
image_write(img, tmp)
img_raw <- readBin(tmp, "raw", file.info(tmp)$size)
head(img_raw)
#> [1] ff d8 ff e0 00 10
object.size(img_raw)
#> 24272 bytes
我在Magick GitHub repo中查找RAW的提法,发现您可以获得一个原始数组,如下所示:
img_raw <- img[[1]]
img_raw
#> 3 channel 256x256 bitmap array: 'bitmap' raw [1:3, 1:256, 1:256] 54 55 4d 4b ...
有可能把它变成一个向量:
img_raw <- as.raw(img[[1]])
head(img_raw)
#> [1] 54 55 4d 4b 4c 44
object.size(img_raw)
#> 196656 bytes
但该向量大约是jpeg的8倍,API不接受它为有效的jpeg.
创建于2024-01-16与reprex v2.0.2