polemic 发表于 2025-3-16 08:06

求个图片批量合并软件

有个文件夹下面有很多子文件夹,每个子文件夹有很多图片,有没有合并图片的软件
可以按照设置(2、3、4……张)水平或者垂直合并图片,要保持原图片的目录结构。


1516 发表于 2025-3-16 11:26

弄个搜查后缀名的软件,搜出来全部拖住拷到其他盘

polemic 发表于 2025-3-17 10:06

1、图片类型包括 bmp jpg png 等常用格式
2、可以实现多张 水平几张或者竖直几张合并
3、根据目录下面的图片顺序合并
4、选择批量合并图片文件夹后,合并后的文件可以保持原来目录机构
主要是目录结构之前有个不保存目录结构好累

igaoyuan 发表于 2025-3-18 16:03

Faststone image viewer
点“创建.连接多幅图片”,按需定义即可

polemic 发表于 2025-3-18 20:49

谢谢需要一个批量的 试了这个需要自己添加还不能保存原来目录结构和原文件名

longwu9t 发表于 2025-3-20 15:28

polemic 发表于 2025-3-18 20:49
谢谢需要一个批量的 试了这个需要自己添加还不能保存原来目录结构和原文件名 ...

:: 执行脚本前一定要做好文件备份 切记
:: imagemagick的命令magick需要在系统路径中
:: Z:\\pic是一个示例目录 替换为要处理的目录
:: 如需处理其它类型的图片可以自行添加相应的后缀

@echo off
setlocal enabledelayedexpansion

:: 设置要遍历的根目录
set "root_dir=Z:\\pic"

:: 递归遍历所有子目录
for /r "%root_dir%" %%d in (.) do (
    set "dir=%%~fd"
    set "name=%%~nxd"

    :: 搜索支持的图片格式
    set "image_list="
    for %%i in ("!dir!\*.bmp" "!dir!\*.png" "!dir!\*.jpeg" "!dir!\*.jpg") do (
      if /i not "%%~nxi"=="!name!.jpg" (
            set "image_list=!image_list! "%%i""
      )
    )

    :: 确保有图片需要合并
    if not "!image_list!"=="" (
      :: 调用 magick 进行合并
      :: 纵向
      magick !image_list! -append "!dir!\!name!_1.jpg"
      :: 横向
      magick !image_list! +append "!dir!\!name!_2.jpg"

      :: 合并成功后才删除原图片
      del /f /q !image_list!
    )
)

echo 全部处理完成!
exit /b


以上内容保存为一个windows批处理
比如 aaa.bat 执行即可

longwu9t 发表于 2025-3-20 15:43

@echo off
:: 如果文件名有生僻字可以考虑切换到UTF-8代码页
:: chcp 65001 >nul
setlocal enabledelayedexpansion

:: 设置要遍历的根目录
set "root_dir=Z:\pic"

:: 递归遍历所有子目录
for /r "%root_dir%" %%d in (.) do (
    set "dir=%%~fd"
    set "name=%%~nxd"

    :: 先清空 image_list
    set "image_list="

    :: 获取按文件名排序的文件
    for /f "delims=" %%i in ('dir /b /on "!dir!\*.bmp" "!dir!\*.png" "!dir!\*.jpeg" "!dir!\*.jpg" 2^>nul') do (
      if /i not "%%~nxi"=="!name!_1.jpg" if /i not "%%~nxi"=="!name!_2.jpg" (
            set "image_list=!image_list! "!dir!\%%i""
      )
    )

    :: 确保有图片需要合并
    if not "!image_list!"=="" (
      echo 合并 "!dir!" 内的图片到 "!name!_1.jpg" 和 "!name!_2.jpg"...

      :: 纵向合并
      magick !image_list! -append "!dir!\!name!_1.jpg"
      :: 横向合并
      magick !image_list! +append "!dir!\!name!_2.jpg"

      :: 确保两个文件都生成成功后才删除原图片
      if exist "!dir!\!name!_1.jpg" if exist "!dir!\!name!_2.jpg" (
            echo 合并成功,删除原文件...
            for %%i in (!image_list!) do del /f /q %%i
      ) else (
            echo 错误:未正确生成 "!name!_1.jpg" 或 "!name!_2.jpg",请检查!
      )
    )
)

echo 处理完成!
exit /b


这个是优化版

longwu9t 发表于 2025-3-20 15:50

https://imagemagick.org/script/download.php#windows

可以选择便携版:ImageMagick-7.1.1-46-portable-Q16-HDRI-x64
解压后,将目录添加到系统路径后即可。

yj070 发表于 2025-3-20 16:37

本帖最后由 yj070 于 2025-3-20 16:42 编辑

隔壁看到的,看看这个可以实现你的要求不

polemic 发表于 2025-3-20 20:37

谢谢周末试试
页: [1]
查看完整版本: 求个图片批量合并软件