Jus*_*tin 6 linux compression bash command-line images
我最近从 imagemagick 了解到了 convert 命令,我用它来压缩许多我个人使用的图片,以及我拥有的博客。根据我的经验,Imagemagick 是最好的图像压缩程序,它可以最大程度地控制如何压缩图像。我还有很多想压缩的图片,但又不想用convert命令这么多次,一个一个一个文件。主要的问题是我做这件事非常耗时。我希望能够以一种大批量的方式来压缩我的图像。我可以通过命令行执行此操作,但 GUI 可能会使这更直观一些。
这是我用来将原始图像缩小为原始大小 20% 的命令示例。转换 -resize 20% 20140322_102113.jpg 20140322_102113opt.jpg
如果我说有 100 张图像,并且它们都在同一个文件夹中,我希望能够执行以下操作
对于所有图像 convert -resize 20% imagename.jpg imagename_optimized.jpg
不知道有没有命令已经可以做到这一点,如果没有,我想过创建一个bash命令,但我对bash不太熟悉。帮助创建这个简单的 bash 脚本,或有关如何解决我的困境的建议表示赞赏。我使用 Linux,并且只想要一个专门针对 Linux 的解决方案。谢谢
使用“for”循环肯定会奏效——而且是一种很好的通用技术——但几乎可以肯定,你的机器上有超过 1 个处理器,那么为什么一次只进行一个转换?
如果你这样做,你可以让事情进展得更快:
find . -name '*.jpg' | xargs -n1 -P8 -I{} convert -resize 20% "{}" "opt-{}"
Run Code Online (Sandbox Code Playgroud)
xargs 的参数是:
n1 - Only give 'convert' one file at a time
P8 - Use 8 processes
I{} - Replace {} with the filename given by 'find'
Run Code Online (Sandbox Code Playgroud)
然后在之后给出转换命令。
命名格式略有不同,但是:
for img in *.jpg; do
convert -resize 20% "$img" "opt-$img"
done
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7090 次 |
最近记录: |