使用R中的基本图形绘制JPG图像

dig*_*aps 20 r

我正在寻找一种在R中的图形设备上绘制照片JPEG图像的简单方法.

例如,使用该raster包的以下内容似乎忽略了图像中的颜色属性.我想以原始颜色再现照片:

library(raster)
library(rgdal)

myJPG <- raster("colourfulPic.jpg")
plot(myJPG)  ## Recolours JPEG;
Run Code Online (Sandbox Code Playgroud)

我发现该软件包rimage最近已经存档,似乎不再推荐使用(见这里),如果它确实能够满足我的需求.

类似地EBImage,BioConductor可能也可以工作,不是为64位Windows构建的,不幸的是我需要这种架构.

请告诉我,我错过了基本图形中非常明显的东西?


Jea*_*lie 26

这是一个更新的解决方案,它仅依赖于jpeg包并处理颜色和灰度图像(其他解决方案中使用的包已过时,不会安装最新的R版本).

解决方案包括此绘图功能:

plot_jpeg = function(path, add=FALSE)
{
  require('jpeg')
  jpg = readJPEG(path, native=T) # read the file
  res = dim(jpg)[2:1] # get the resolution, [x, y]
  if (!add) # initialize an empty plot area if add==FALSE
    plot(1,1,xlim=c(1,res[1]),ylim=c(1,res[2]),asp=1,type='n',xaxs='i',yaxs='i',xaxt='n',yaxt='n',xlab='',ylab='',bty='n')
  rasterImage(jpg,1,1,res[1],res[2])
}
Run Code Online (Sandbox Code Playgroud)

然后可以使用图片的路径作为参数调用此函数,例如:

plot_jpeg('~/nyancat.jpg')
Run Code Online (Sandbox Code Playgroud)

要将图片添加到现有绘图中,请使用开关add=TRUE- 并警惕轴限制!

  • 我不得不反转分辨率以获得正确的情节.将res = dim(jpg)[1:2]更改为res = dim(jpg)[2:1]或用res [2]替换所有res [1],反之亦然以修复错误 (4认同)

Jam*_*orn 9

使用imager包:

library(imager)

image <- load.image(image_filename)
plot(image)
Run Code Online (Sandbox Code Playgroud)

这适用于许多图像格式,包括jpeggif等...


App*_*eue 5

而不是rimage,也许使用包ReadImages

library('ReadImages')
myjpg <- read.jpeg('E:/bigfoot.jpg')
plot(myjpg)
Run Code Online (Sandbox Code Playgroud)

  • 不幸的是,包`ReadImages` 是孤立的,在CRAN 上不再可用。它尚未更新为适用于 R 版本 2.14.0 及更高版本。 (8认同)
  • FWIW 如果您关心性能或内存使用情况,使用 `readJPEG(..., native=TRUE)` 从 `jpeg` 读取,然后从 `graphics` 到绘图的 `rasterImage` 对大图像更有效,因为它避免了`ReadImages` 所做的所有不必要的数组转换。 (7认同)