Avi*_*i C 24 shell imagemagick
我使用ImageMagick 转换命令制作缩略图并将转换后的图像一个接一个地保存在PHP中.
但是,无法弄清楚如何在转换后的图像中保留图像名称.
> convert 1.JPG -resize 120X120 thumb/*.JPG
Run Code Online (Sandbox Code Playgroud)
需要保持输出文件名与输入相同.请帮忙.
Ada*_*dam 24
一个简单的解决方案是复制,然后是mogrify - 另一个imagemagick工具 - 这将保持相同的名称,它采用所有相同的args作为转换.
cp *.jpg thumb/
cd thumb
mogrify -resize 120X120 *.JPG
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用find -exec或xargs执行一些shell脚本编写
# using -exec
find . -iname "*.JPG" -maxdepth 1 -exec convert -resize 120x120 {} thumbs/{} \;
# using xargs
find . -iname "*.JPG" -maxdepth 1 | xargs -i{} convert -resize 120x120 {} thumbs/{}
Run Code Online (Sandbox Code Playgroud)
Ali*_*ing 24
其他方式:
convert *.jpg -resize 80% -set filename:f '%t' ../'%[filename:f].jpg'
Run Code Online (Sandbox Code Playgroud)
将转换后的文件放在上面的文件夹中.
该选项-set filename:f '%t'
将属性设置为filename:f
没有扩展名的当前文件名.以...开头的属性filename:
是一种特殊情况,可以在输出文件名中引用.在这里我们将其设置为../'%[filename:f].jpg
,最终是.jpg
在父目录中替换为扩展名的图像文件名.
-set
文档,提到filename:
特殊情况%t
和其他格式和打印图像属性另一种不涉及大量输入的简单方法是GNU Parallel:
parallel convert {} -resize 120X120 thumb/{} ::: *.jpg
Run Code Online (Sandbox Code Playgroud)
convert
为之后给出的每个文件调用:::
,并{}
替换为每个invokation的文件名.这也将并行处理文件,因此它可能比其他解决方案快得多.
如果要转换文件类型,它也可以工作:
parallel convert {} {.}.png ::: *.jpg
Run Code Online (Sandbox Code Playgroud)
{.}
被替换为没有扩展名的文件名,允许您轻松更改.