写在开始
最近有些批量截取图片的一个固定部分的需求,所以找了一下解决方案,然后想到了ffmpeg
操作方法
单个命令的样子大概如下:
ffmpeg -i .\input.jpg -filter:v "crop=width:height:x:y" out.jpg
其中width是结果图的宽度,height是结果图的高度,x是结果图在原图的起始x轴坐标,y是结果图在原图的起始y轴坐标。
这个参数本是在视频截取中使用的,不过输入是图片的时候一样可以用。
如果要批量执行的话使用下面这个命令
Get-ChildItem -Filter *.jpg -Recurse | Foreach-Object { ffmpeg -i $_.FullName -filter:v "crop=width:height:x:y" "$_.png" }
不过这样子就会在原来的名字后多添加一个.png
,如果有需要可以自己再加一点参数把前面的.jpg
去掉,暂时忘记怎么删除了,也可以这么做:
mkdir out
Get-ChildItem -Filter *.jpg -Recurse | Foreach-Object { ffmpeg -i $_.FullName -filter:v "crop=width:height:x:y" ./out/"$_" }
这样子的话就把文件输出到out文件夹了,输出文件格式和输入文件格式相同。
写在最后
整体来说这件事情还是很简单的,就是命令不常用容易忘记,写一下记录一下吧。