# ダメな方法 library(imager) im <- grayscale(boats) # 倍率 ax <- 2 ay <- 2 # 元画像の次元 dim0 <- dim(im) # 新画像の次元 dim1 <- dim0 # 横幅のリサイズ dim1[1] <- round(ax * dim0[1]) # 縦幅のリサイズ dim1[2] <- round(ay * dim0[2]) # cimg変数で処理すると遅いので配列で処理する g0 <- array(im, dim0) g1 <- array(0, dim1) # 元画像の座標でループ for (x0 in 1 : dim0[1]) { # 変換 x0→x1 x1 <- round(ax * x0) for (y0 in 1 : dim0[2]) { # 変換 y0→y1 y1 <- round(ay * y0) # 画素値の代入 g1[x1, y1, ,] <- g0[x0, y0, ,] } } # 配列→cimg変数 im.resize <- as.cimg(g1) # 同時に2枚並べるレイアウト layout(t(1 : 2)) xl <- c(1, width(im.resize)) yl <- c(height(im.resize), 1) plot(im, xlim = xl, ylim = yl, interpolate = FALSE, main = "元の画像") plot(im.resize, xlim = xl, ylim = yl, interpolate = FALSE, main = "リサイズ後の画像") # レイアウトを元に戻す layout(1)