使用FFmpeg获取带透明通道图片最右下角非透明像素坐标并调整批量水印脚本
使用FFmpeg获取带透明通道图片最右下角非透明像素坐标并调整批量水印脚本
嘿,我完全get到你的需求了——你现在的批量水印脚本是把水印固定在距离图片右下角5像素的位置,但你的目标图片本身右下角有非透明内容,你需要先定位每张图片最右下角的非透明像素坐标,再把水印精准放在这个坐标的左上方(保持原来的5像素偏移),对吧?
下面我一步步给你解决这个问题:
1. 先搞懂怎么定位单张图片的右下角非透明像素
我们可以利用FFmpeg的滤镜组合来提取alpha通道、翻转图像,再检测黑色区域(对应原图像的透明区域),从而反推出目标坐标:
alphaextract:把图片的透明通道提取出来,变成一张灰度图(非透明区域是白色,透明区域是黑色)reverse:把提取后的灰度图上下+左右翻转,这样原图像的右下角就变成了翻转图的左上角blackdetect:检测翻转图里的黑色区域,找到第一个非黑色区域的起始坐标,这个坐标对应原图像右下角非透明区域的边缘
执行这个命令就能获取关键信息:
ffmpeg -i 你的图片.webp -vf "alphaextract,reverse,blackdetect=d=0:pix_th=0.9" -f null - 2>&1 | findstr "black_region"
输出会类似这样:black_region: x0:100 y0:80 w:1820 h:1000,这里的x0和y0就是翻转图里非黑区域的起始坐标,对应原图像的右下角非透明像素坐标就是原宽度-x0和原高度-y0。
另外你可以用这两个命令单独获取图片的宽和高:
ffmpeg -i 你的图片.webp -v error -select_streams v:0 -show_entries stream=width -of default=noprint_wrappers=1:nokey=1 ffmpeg -i 你的图片.webp -v error -select_streams v:0 -show_entries stream=height -of default=noprint_wrappers=1:nokey=1
2. 整合到批量水印脚本里
我把上面的逻辑写成了Windows批处理脚本(和你原来的脚本环境一致),直接用就行:
@echo off setlocal enabledelayedexpansion :: 配置你的水印路径和偏移量(就是你原来的5像素) set "watermark=C:\pad\watermark.png" set "offset=5" :: 遍历当前目录下所有webp图片 for %%j in (*.webp) do ( :: 获取当前图片的宽和高 for /f "tokens=2" %%a in ('ffmpeg -i "%%j" -v error -select_streams v:0 -show_entries stream=width -of default=noprint_wrappers=1:nokey=1') do set W=%%a for /f "tokens=2" %%a in ('ffmpeg -i "%%j" -v error -select_streams v:0 -show_entries stream=height -of default=noprint_wrappers=1:nokey=1') do set H=%%a :: 获取翻转图里黑色区域的起始x0、y0 for /f "tokens=4,6" %%a in ('ffmpeg -i "%%j" -vf "alphaextract,reverse,blackdetect=d=0:pix_th=0.9" -f null - 2^>^&1 | findstr "black_region"') do set x1=%%a& set y1=%%b :: 执行水印添加:把水印放在目标像素的左上方offset像素处 ffmpeg -i "%%j" -i "%watermark%" -filter_complex "overlay=(W-!x1!)-w-!offset!:(H-!y1!)-h-!offset!" -c:v libwebp "%%~nj_watermarked.webp" ) endlocal
脚本说明:
setlocal enabledelayedexpansion:开启延迟变量扩展,保证循环内部的变量能动态更新offset:你可以随时调整这个值,改变水印和目标像素的距离- 如果图片完全没有透明区域,脚本会自动退化成你原来的逻辑(把水印放在图片右下角偏移处),兼容性拉满
备注:内容来源于stack exchange,提问作者naiveelevator
相关产品推荐
相关产品推荐

