【问题标题】:Writing multiple images using Magick on R在 R 上使用 Magick 编写多个图像
【发布时间】:2020-04-10 12:07:54
【问题描述】:

我有一个 excel 句子列表,我正在尝试将每个句子注释到同一个模板图像上并单独保存每个图像文件(即我将有 20 个图像,具有相同的背景但不同的文本 - 类似于 Word 的邮件合并带有文档的功能)。

为此,我使用 R 包 magickimage_annotateimage_write 命令。我的假设是把它放到for 循环中就可以完成这个任务。

我使用了以下代码:

QuoteList=read.csv("wordlist.csv", stringsAsFactors = F, header = T)

myTemplate=image_read("template.png")

for (i in 1:nrow(QuoteList))
{
  thisImage[i]=image_annotate(myTemplate, QuoteList$myquote[i])
  image_write(thisImage[i], format = "png")
}

但是我得到了错误:

Error in magick_image_replace(x, i, value) : subscript out of bounds

我不完全确定我做错了什么,并且非常感谢对此或任何可能的替代解决方案的任何帮助。提前致谢。

【问题讨论】:

    标签: r image save imagemagick


    【解决方案1】:

    您需要在每次迭代中替换您正在编写的对象,但每次都写入一个新的文件名:

    for (i in 1:nrow(QuoteList)){
      thisImage = image_annotate(myTemplate, QuoteList$myquote[i])
      image_write(thisImage, format <- "png", path = paste0(i, ".png"))
    }
    

    【讨论】:

    • 非常感谢,这有效。我对这些循环不是很精通!出于好奇,pastepaste0 有什么区别?助手似乎只是说它是相同的,但做得更“有效”。这是我第一次看到paste0
    • 不客气! paste0 默认情况下假定字符之间没有分隔,我认为它通常也需要较少的参数。
    猜你喜欢
    • 1970-01-01
    • 2019-10-20
    • 2021-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多