首页 > 解决方案 > 从 for 循环中保存图像

问题描述

我是 R 新手,并尝试使用以下代码在 R 循环中裁剪和保存多个文件。它工作正常,但唯一的问题是,当它保存输出图像时,相同的输出文件被覆盖,导致只保存最后一个图像。我希望将裁剪后的图像保存为单独的文件,如“trial_1.png”、“trial_2.png”等。我不知道如何解决这个问题,欢迎提出任何建议。代码主要使用了magick包函数。提前致谢。

代码:


library(pdftools)
library(magick)
library(png)
library(raster)

path = "~/Desktop/RME_task"
file.names<-dir(path, pattern = ".png") 
for(i in 1:length(file.names)){

rme_stimuli_set1_1<-image_read(file.names[i])
rme_stimuli_set1_1_scaled<-image_scale(rme_stimuli_set1_1, "700x700")
rme_stimuli_set1_1_cropped<-image_crop(rme_stimuli_set1_1_scaled, "305x120+118+322")
image_write(rme_stimuli_set1_1_cropped, "CROPPED/trial_.png")

} 

标签: rfor-loop

解决方案


只需在每次交互中更改文件名。

library(pdftools)
library(magick)
library(png)
library(raster)

path = "~/Desktop/RME_task"
file.names<-dir(path, pattern = ".png") 
for(i in 1:length(file.names)){

rme_stimuli_set1_1<-image_read(file.names[i])
rme_stimuli_set1_1_scaled<-image_scale(rme_stimuli_set1_1, "700x700")
rme_stimuli_set1_1_cropped<-image_crop(rme_stimuli_set1_1_scaled, "305x120+118+322")
image_write(rme_stimuli_set1_1_cropped, paste0("CROPPED/trial_",i,".png"))

} 

这样,循环的每次交互都会创建 trial_1.png、trial_2.png 等。


推荐阅读