找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 5480|回复: 18

[文件操作] [已解决]将一张指定路径的png透明logo图片,按原尺寸放到本文件夹中每一张图的左下角

[复制链接]
发表于 2026-8-20 22:53:53 | 显示全部楼层 |阅读模式
本帖最后由 crownking1983 于 2026-8-22 04:18 编辑

跪求批处理将一张指定路径的png格式的透明logo图片,按原尺寸放到本文件夹中每一张图的左下角,文件夹里的图片是jpg png jpeg三种格式的图片

老板给安排了一个任务,做了一个1200*1200的长条LOGO,要批量将这个LOGO用水印的形式,镶嵌到每一张产品海报里。

这批产品海报有1600多张,虽然尺寸都是同宽度的,但是图长短不一,有的贼长贼长的,老板又要求统一放到左下角,无法用PS动作录制功能实现

如果一个一个PS,这1600张长短比例都不统一的图我一个一个弄我手得废!跪求大神拯救我了!

注:这个LOGO不仅是透明背景,LOGO文字本身也是10%透明度的半透明,是批量给图加水印的思路
发表于 2026-8-21 00:00:12 | 显示全部楼层
研究一下 Photoshop 脚本吧!
在Photoshop中,通过 文件 > 脚本 > 浏览 即可选择并运行你下载的 .jsx 脚本文件,
语法基本和JS & VBS 没啥区别,判断 & 函数 & 变量 & 表达 有很多都一样,,,
只不过有些特殊动作的函数不一样而已..!
现在借助 A1 写 Photoshop 脚本很简单的,
只不过写出来的脚本只适合自己定制的工作场景,,,
发表于 2026-8-21 08:42:04 | 显示全部楼层
批处理给图片添加文字水印的几种方法
https://mp.weixin.qq.com/s/NhjgwVzrzCegpIYo5iYEyA

批处理获取照片EXIF添加日期水印
https://mp.weixin.qq.com/s/Ak-FXiCJt5FXgVNBpgKpvg

批处理给照片添加随机图片水印
https://mp.weixin.qq.com/s/mSfzh4YhBYGjiRpuOn6L7A
发表于 2026-8-21 09:16:47 | 显示全部楼层
批处理给照片添加固定位置、固定图片的水印

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. REM 1、下载并安装 ImageMagick 这个命令行工具
  4. REM https://imagemagick.org/download/#windows
  5. REM 2、根据自己电脑实际安装路径设置以下临时环境变量
  6. set "path=C:\Program Files\ImageMagick;%path%"

  7. REM 设置待处理的照片所在的目录
  8. set "FolderOld=D:\Test\照片"
  9. REM 设置水印图片所在的完整路径
  10. set "FileWM=D:\Test\水印\LOGO.png"
  11. REM 设置添加水印之后的照片所在的目录
  12. set "FolderNew=D:\Test\合成"

  13. REM 假设待处理的照片有jpg、png、jpeg三种格式,如有需要可以继续添加
  14. set "ListExt=jpg png jpeg"
  15. set "PictureType="
  16. for %%i in (%ListExt%) do (
  17.     set "PictureType=!PictureType! *.%%i"
  18. )

  19. REM 水印位置参数列表
  20. REM 左上 NorthWest
  21. REM 中上 North
  22. REM 右上 NorthEast
  23. REM 左中 West
  24. REM 正中 Center
  25. REM 右中 East
  26. REM 左下 SouthWest
  27. REM 中下 South
  28. REM 右下 SouthEast

  29. cd /d "%FolderOld%"
  30. for /f "delims=" %%i in ('dir /b /a-d !PictureType!') do (
  31.     echo %%i
  32.     magick.exe composite -gravity SouthWest "%FileWM%" "%%i" "%FolderNew%\%%i"
  33. )
  34. for /f "delims=" %%a in ('dir /b /ad') do (
  35.     echo --- %%a
  36.     if not exist "%FolderNew%\%%a" (
  37.         md "%FolderNew%\%%a"
  38.     )
  39.     pushd "%%a"
  40.     for /f "delims=" %%i in ('dir /b /a-d !PictureType!') do (
  41.         echo %%i
  42.         magick.exe composite -gravity SouthWest "%FileWM%" "%%i" "%FolderNew%\%%a\%%i"
  43.     )
  44.     popd
  45. )
  46. endlocal
复制代码

评分

参与人数 1技术 +1 收起 理由
crownking1983 + 1 乐于助人

查看全部评分

发表于 2026-8-21 11:03:17 | 显示全部楼层
给一个简化脚本如下(存放在底图根目录下运行),输出的每个合成图片保持底图格式;代码第一行假设 logo 图片的路径,楼主可自定义,将其与要处理的底图文件夹分开即可。

test.bat
  1. @echo off &setlocal &set "logoF=d:\logo\logo.png"
  2. for /f "delims=" %%F in ('dir /b/s/a-d *.jpg *.jpeg *.png') do magick "%%F" "%logoF%" -gravity southwest -composite "%%~dpnF.new%%~xF"
  3. pause&exit/b
复制代码

评分

参与人数 1技术 +1 收起 理由
crownking1983 + 1 乐于助人

查看全部评分

发表于 2026-8-21 11:23:09 | 显示全部楼层
设定 logo 宽度 = 图片宽度的 12%

AI(有修改):

  1. @echo off
  2. setlocal EnableDelayedExpansion
  3. cd /d "%~dp0"

  4. set "Logo=logo.png"
  5. set "OutDir=输出"
  6. set "Percent=12"
  7. set "MarginX=20"
  8. set "MarginY=20"

  9. where magick >nul 2>nul || (
  10.     echo [错误] 未找到 ImageMagick
  11.     pause
  12.     exit /b
  13. )

  14. if not exist "%Logo%" (
  15.     echo [错误] 找不到 %Logo%
  16.     pause
  17.     exit /b
  18. )

  19. if not exist "%OutDir%" md "%OutDir%"

  20. for %%F in (*.jpg *.jpeg *.png) do (
  21.     if /i not "%%~nxF"=="%Logo%" (

  22.         for /f %%W in ('magick identify -format "%%w" "%%F"') do (
  23.             set /a LogoW=%%W*%Percent%/100
  24.         )

  25.         echo [处理中] %%~nxF  logo宽=!LogoW!px

  26.         magick "%%F" ^
  27.             ^( "%Logo%" -resize !LogoW!x ^) ^
  28.             -gravity southwest ^
  29.             -geometry +%MarginX%+%MarginY% ^
  30.             -composite ^
  31.             "%OutDir%\%%~nxF"
  32.             chcp 936 >nul
  33.     )
  34. )

  35. echo.
  36. echo 全部完成
  37. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
crownking1983 + 1 乐于助人

查看全部评分

 楼主| 发表于 2026-8-22 04:17:58 | 显示全部楼层
各位大神!!感谢!!你们的都能用啊!!太牛逼了!!!!!!
 楼主| 发表于 2026-8-24 11:17:45 | 显示全部楼层
aloha20200628 发表于 2026-8-21 11:03
给一个简化脚本如下(存放在底图根目录下运行),输出的每个合成图片保持底图格式;代码第一行假设 logo 图 ...

大神!老板今天突然改变主意了,他说不放左下角了,让我把水印放到文件夹里每一张图的随机任意位置
也就是说,水印不再放到每一张图的固定位置了,而是随机一个任意位置
那么这个代码应该怎么改呢?急,好人一生平安
 楼主| 发表于 2026-8-24 11:17:57 | 显示全部楼层
77七 发表于 2026-8-21 11:23
设定 logo 宽度 = 图片宽度的 12%

AI(有修改):

大神!老板今天突然改变主意了,他说不放左下角了,让我把水印放到文件夹里每一张图的随机任意位置
也就是说,水印不再放到每一张图的固定位置了,而是随机一个任意位置
那么这个代码应该怎么改呢?急,好人一生平安
 楼主| 发表于 2026-8-24 11:18:42 | 显示全部楼层
Batcher 发表于 2026-8-21 09:16
批处理给照片添加固定位置、固定图片的水印

大神!老板今天突然改变主意了,他说不放左下角了,让我把水印放到文件夹里每一张图的随机任意位置
也就是说,水印不再放到每一张图的固定位置了,而是随机一个任意位置
那么这个代码应该怎么改呢?急,好人一生平安
 楼主| 发表于 2026-8-24 11:19:02 | 显示全部楼层
感谢各路神仙,跪求帮忙。
老板今天突然改变主意了,他说不放左下角了,让我把水印放到文件夹里每一张图的随机任意位置
也就是说,水印不再放到每一张图的固定位置了,而是随机一个任意位置
那么这个代码应该怎么改呢?急,好人一生平安
发表于 2026-8-24 11:54:21 | 显示全部楼层
crownking1983 发表于 2026-8-24 11:19
感谢各路神仙,跪求帮忙。
老板今天突然改变主意了,他说不放左下角了,让我把水印放到文件夹里每一张图的 ...


回复一次就行了,大家都能看到。

AI:(有修改,已测试)

  1. @echo off
  2. chcp 936 >nul
  3. setlocal EnableDelayedExpansion
  4. cd /d "%~dp0"

  5. set "Logo=logo.png"
  6. set "OutDir=output"
  7. set "Percent=12"

  8. where magick >nul 2>nul || (
  9.     echo [ERROR] ImageMagick was not found.
  10.     pause
  11.     exit /b
  12. )

  13. if not exist "%Logo%" (
  14.     echo [ERROR] Logo file not found: %Logo%
  15.     pause
  16.     exit /b
  17. )

  18. if not exist "%OutDir%" md "%OutDir%"

  19. rem Get original logo dimensions
  20. for /f "tokens=1,2" %%A in ('magick identify -format "%%w %%h" "%Logo%"') do (
  21.     set "LogoSrcW=%%A"
  22.     set "LogoSrcH=%%B"
  23. )
  24. chcp 936 >nul

  25. for %%F in (*.jpg *.jpeg *.png) do (
  26.         if /i not "%%~nxF"=="%Logo%" (

  27.                 rem Get image dimensions
  28.                 for /f "tokens=1,2" %%A in ('magick identify -format "%%w %%h" "%%F"') do (
  29.                         set "ImgW=%%A"
  30.                         set "ImgH=%%B"
  31.                 )
  32.                 chcp 936 >nul

  33.                 rem Logo width = image width * Percent
  34.                 set /a LogoW=ImgW*Percent/100
  35.                 set /a LogoH=LogoW*LogoSrcH/LogoSrcW

  36.                 rem Prevent logo from exceeding image height
  37.                 if !LogoH! GTR !ImgH! (
  38.                         set /a LogoH=ImgH
  39.                         set /a LogoW=ImgH*LogoSrcW/LogoSrcH
  40.                 )

  41.                 set /a MaxX=ImgW-LogoW
  42.                 set /a MaxY=ImgH-LogoH
  43.                 rem Generate larger random numbers than %%RANDOM%% alone
  44.                 set /a "R1=!random!*32768+!random!"
  45.                 set /a "R2=!random!*32768+!random!"
  46.                 set /a "X=R1 %% (MaxX+1)"
  47.                 set /a "Y=R2 %% (MaxY+1)"

  48.                 echo [Processing] %%~nxF  Logo: !LogoW!x!LogoH!  Position: !X!,!Y!

  49.                 magick "%%F" ^
  50.                         ^( "%Logo%" -resize !LogoW!x!LogoH! ^) ^
  51.                         -gravity northwest ^
  52.                         -geometry +!X!+!Y! ^
  53.                         -composite ^
  54.                         "%OutDir%\%%~nxF"

  55.                 chcp 936 >nul
  56.         )
  57. )

  58. echo.
  59. echo 完成
  60. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
crownking1983 + 1 乐于助人

查看全部评分

发表于 2026-8-24 12:05:55 | 显示全部楼层
crownking1983 发表于 2026-8-24 11:18
大神!老板今天突然改变主意了,他说不放左下角了,让我把水印放到文件夹里每一张图的随机任意位置
也就 ...

请看3楼第三个链接,里面有完整代码。
发表于 2026-8-24 13:08:00 | 显示全部楼层
crownking1983 发表于 2026-8-24 11:17
大神!老板今天突然改变主意了,他说不放左下角了,让我把水印放到文件夹里每一张图的随机任意位置
也就 ...


test.bat
  1. @echo off &setlocal &set "logoF=d:\logo\logo.png"
  2. for /f "tokens=1,2 delims= " %%a in ('magick identify -format "%%w %%h" "%logoF%" ') do set/a "_w=%%a,_h=%%b"
  3. for /f "delims=" %%F in ('dir /b/s/a-d *.jpg *.jpeg *.png') do (
  4.    for /f "tokens=1,2 delims= " %%a in ('magick identify -format "%%w %%h" "%%F" ') do set/a "xm=%%a-%_w%, ym=%%b-%_h%"
  5.    setlocal enabledelayedexpansion
  6.    set/a "xr=!random!%%(!xm!+1), yr=!random!%%(!ym!+1)"
  7.    magick "%%F" "%logoF%" -geometry +!xr!+!yr! -composite "%%~dpnF.new%%~xF" &endlocal )
  8. exit/b
复制代码

评分

参与人数 1技术 +1 收起 理由
crownking1983 + 1 乐于助人

查看全部评分

 楼主| 发表于 2026-8-24 16:36:32 | 显示全部楼层
77七 发表于 2026-8-24 11:54
回复一次就行了,大家都能看到。

AI:(有修改,已测试)

再次谢谢啊@ 上次三位大神都帮忙,十分感激,所以分别回复了一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-9-14 13:18

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表