You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R中遍历文件夹内序列文件并按每8张为一组生成GIF动画

解决方案

直接对已读取的文件列表做固定长度分组,再遍历每组生成对应GIF即可,修改后的完整代码如下:

library(magick)
library(purrr)
library(gifski)
Folder <- "C:/Path/To/Folder/Containing/JPG/Images"

setwd(Folder)
# 读取所有jpg文件,sort()保证文件按名称顺序排列,可根据需求调整排序规则
# 需要遍历所有子文件夹的话,添加参数 recursive = TRUE
file.jpg <- list.files(Folder, pattern = "\\.jpg$", ignore.case = TRUE, full.names = TRUE) |> sort()

# 按每8张为一组拆分文件列表
group_size <- 8
file_groups <- split(file.jpg, ceiling(seq_along(file.jpg) / group_size))

# 遍历每个分组生成GIF
walk(file_groups, function(group) {
  # 可选:如果需要过滤不足8张的分组,取消注释下行代码
  # if(length(group) < 8) return()
  # 取组内第一张的文件名作为输出GIF名称,替换后缀为.gif
  output_name <- gsub("\\.jpg$", ".gif", basename(group[1]), ignore.case = TRUE)
  # 生成GIF
  group |> 
    image_read() |>
    image_scale('x500') |>
    image_join() |>
    image_write_gif(output_name, delay = 1/4)
})

关键改动说明

  • 新增分组逻辑:通过ceiling(seq_along(file.jpg)/8)给每个文件分配分组编号,再用split()切割为8张一组的列表,默认最后一组不足8张也会正常处理,需要过滤的话可以添加对应判断
  • 新增批量输出逻辑:用walk遍历每个分组,自动取每组第一张图片的文件名作为GIF输出名称,不需要手动指定输出文件名
  • 优化文件匹配规则:把原pattern的*.jpg改为\\.jpg$,避免匹配到文件名中间带jpg的异常文件,同时增加排序逻辑保证序列顺序符合预期

内容的提问来源于stack exchange,提问作者Lee Walston

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 05:36:05