[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 有个批处理imagemagick的需求,不知道有会做的朋友吗?

本帖最后由 schubert 于 2021-10-28 15:47 编辑

有偿服务,

需要一批图片批量加相框,然后缩放到背景图,背景图使用图片的主色调。

回复 11# Batcher

还有个想改进下的,就是想把图片统一放到同一个背景下应该怎么定义呢?

TOP

回复 11# Batcher

可以让最后的效果图长宽比1:1么

TOP

回复 11# Batcher


   

给力!!!

TOP

回复 1# schubert


背景图使用图片的主色调
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. REM 处理该文件夹下(包括子文件夹)的图片
  4. set "SrcFolder=C:\Users\Administrator\Desktop\1"
  5. REM 指定处理之后的图片放到哪个文件夹
  6. set "DstFolder=C:\Users\Administrator\Desktop\2"
  7. REM 根据自己电脑实际情况设置ImageMagick的路径
  8. set "path=C:\Program Files\ImageMagick;%path%"
  9. if not exist "%DstFolder%" (
  10.     md "%DstFolder%"
  11. )
  12. if not exist "%SrcFolder%" (
  13.     echo 找不到待处理的图片文件夹
  14.     pause
  15.     goto :eof
  16. )
  17. for /f "delims=" %%i in ('dir /b /s /a-d "%SrcFolder%\*.jpg"') do (
  18.     echo 正在处理图片:%%i
  19.     set "MeanRGB="
  20.     for /f "tokens=2" %%a in ('identify.exe -verbose "%%i" ^| find "mean:"') do (
  21.         set "MeanRGB=!MeanRGB! %%a"
  22.     )
  23.     for /f "tokens=1-3" %%a in ("!MeanRGB!") do (
  24.         set "MeanRGB=%%a,%%b,%%c"
  25.     )
  26.     echo rgb^(!MeanRGB!^)
  27.     set "SrcFull=%%i"
  28.     set "DstSub=%DstFolder%!SrcFull:%SrcFolder%=!"
  29.     for %%j in ("!DstSub!") do (
  30.         if not exist "%%~dpj" (
  31.             md "%%~dpj"
  32.         )
  33.         montage.exe "%%i" -shadow -geometry +20+20 -background rgb^(!MeanRGB!^) -resize x500 -bordercolor black -border 15x15 "%%~dpj%%~ni.png"
  34.     )
  35. )
  36. pause
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 9# Batcher


    非常感谢,已经可以使用了,

我再研究研究怎么让阴影明显点,感觉投影阴影稍微浅了点

TOP

回复 8# schubert
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. REM 处理该文件夹下(包括子文件夹)的图片
  4. set "SrcFolder=C:\Users\Administrator\Desktop\1"
  5. REM 指定处理之后的图片放到哪个文件夹
  6. set "DstFolder=C:\Users\Administrator\Desktop\2"
  7. set "montage=montage.exe"
  8. if not exist "%DstFolder%" (
  9.     md "%DstFolder%"
  10. )
  11. if not exist "%SrcFolder%" (
  12.     echo 找不到待处理的图片文件夹
  13.     pause
  14.     goto :eof
  15. )
  16. for /f "delims=" %%i in ('dir /b /s /a-d "%SrcFolder%\*.jpg"') do (
  17.     echo 正在处理图片:%%i
  18.     set "SrcFull=%%i"
  19.     set "DstSub=%DstFolder%!SrcFull:%SrcFolder%=!"
  20.     for %%j in ("!DstSub!") do (
  21.         if not exist "%%~dpj" (
  22.             md "%%~dpj"
  23.         )
  24.         "%montage%" "%%i" -shadow -geometry +20+20 -background none -resize x500 -bordercolor black -border 15x15 "%%~dpj%%~ni.png"
  25.     )
  26. )
  27. pause
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 7# Batcher


    可以让他处理文件夹下的所有文件和子文件夹么?

TOP

回复 6# schubert


    imagemagick安装好了之后会有好几个xml文件你把它们跟montage.exe放在一起就不会有这些报错了
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 5# Batcher


   
不知道是否可以处理文件夹下面的所有子文件夹和文件,并保存在指定的新的文件夹中,按照原文件夹结构

另外产生了一个错误,不过好像又不妨碍新图片的产生。

就是下面这个

正在处理图片:0009.jpg
montage.exe: UnableToOpenConfigureFile `magic.xml' @ warning/configure.c/GetConfigureOptions/714.
montage.exe: UnableToOpenConfigureFile `colors.xml' @ warning/configure.c/GetConfigureOptions/714.
montage.exe: UnableToOpenConfigureFile `type.xml' @ warning/configure.c/GetConfigureOptions/714.
正在处理图片:0010.jpg
montage.exe: UnableToOpenConfigureFile `magic.xml' @ warning/configure.c/GetConfigureOptions/714.
montage.exe: UnableToOpenConfigureFile `colors.xml' @ warning/configure.c/GetConfigureOptions/714.
montage.exe: UnableToOpenConfigureFile `type.xml' @ warning/configure.c/GetConfigureOptions/714.

TOP

回复 4# schubert


1楼的需求描述里面没有提到阴影效果,你试试这样:
  1. @echo off
  2. set "SrcFolder=C:\Users\Administrator\Desktop\1"
  3. set "DstFolder=C:\Users\Administrator\Desktop\2"
  4. set "montage=montage.exe"
  5. if not exist "%DstFolder%" (
  6.     md "%DstFolder%"
  7. )
  8. if not exist "%SrcFolder%" (
  9.     echo 找不到待处理的图片文件夹
  10.     pause
  11.     goto :eof
  12. )
  13. for /f "delims=" %%i in ('dir /b /a-d "%SrcFolder%\*.jpg"') do (
  14.     echo 正在处理图片:%%i
  15.     "%montage%" "%SrcFolder%\%%i" -shadow -geometry +20+20 -background none -resize x500 -bordercolor black -border 15x15 "%DstFolder%\%%~ni.png"
  16. )
  17. pause
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 2# Batcher


或者直接加相框阴影,背景设置透明,另外用png格式保存,不知道convert.exe是否能实现背景透明的png文件保存

TOP

回复 2# Batcher

是已经加相框,但需要有带相框阴影,另外生成背景的那种。

TOP

回复 1# schubert


你说的加相框是这个效果吗:
  1. @echo off
  2. set "SrcFolder=C:\Users\Administrator\Desktop\1"
  3. set "DstFolder=C:\Users\Administrator\Desktop\2"
  4. set "convert=convert.exe"
  5. if not exist "%DstFolder%" (
  6.     md "%DstFolder%"
  7. )
  8. if not exist "%SrcFolder%" (
  9.     echo 找不到待处理的图片文件夹
  10.     pause
  11.     goto :eof
  12. )
  13. for /f "delims=" %%i in ('dir /b /a-d "%SrcFolder%\*.jpg"') do (
  14.     echo 正在处理图片:%%i
  15.     "%convert%" "%SrcFolder%\%%i" -bordercolor "#ddddff" -border 25x25 "%DstFolder%\%%i"
  16. )
  17. pause
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表