首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有linux命令只需一步就可以批量优化多个映像文件?

是否有linux命令只需一步就可以批量优化多个映像文件?
EN

Ask Ubuntu用户
提问于 2015-06-26 11:30:44
回答 1查看 1.1K关注 0票数 1

我在文件夹里有一堆图片:

代码语言:javascript
复制
images/image1.jpg
images/image2.jpg
...

这些图像没有为网络进行优化。

只是想知道是否有linux命令只需一步就可以批量优化这些映像?

更新:我需要为每一张图片做两件事:

  1. 如果图像的宽度大于900 to,则将宽度减小到900 to(保持比例)。
  2. 保存文件的质量较低,让我们说70%的原始。
EN

回答 1

Ask Ubuntu用户

发布于 2018-12-12 22:22:37

如果您有大量文件,并且希望快速完成此操作,您还可以使用并行程序:

代码语言:javascript
复制
sudo apt install imagemagick parallel

然后是:

代码语言:javascript
复制
find . \( -name '*.jp*g' -o -name '*.png' \) -a ! -name '*.min.*' -type f -print0 | \
parallel -0 'convert {} -resize '>900x' -quality '70%' \
    -set filename:newname "%d/%[basename].min.%[extension]" "%[filename:newname]"'

让我们走一走:

  • find --寻找文件
    • . --在当前目录中
    • \( -name '*.jp*g' -o -name '*.png' \) --或者是png或者jpeg ( "jpg“和"jpeg”都是常见的扩展!)
    • -a ! -name '*.min.*' --跳过已经最小化的文件
    • -type f --并且是实际文件,而不是符号链接或命名奇怪的目录。
    • -print0 -打印这些以空字节分隔的文件(这样空格就不会破坏事物)

  • parallel --从前面的命令中读取,并对每个元素并行执行此命令
    • -0 --每个元素都用空字节分隔。
    • convert {} --调用imagemagick“转换”程序,其文件名替换了{}
      • resize '>900x' -quality '70%' --在x轴上将图像调整到最大900 70,并将jpeg质量更改为70%。确实有多还有其他可能的选择.
      • -set filename:newname "%d/%[basename].min.%[extension]" --创建一个具有新文件名的变量。请参阅所有有效值的文档。
        • %d --文件所在的目录
        • %[basename] --没有任何扩展名的文件名
        • %[extension] --文件的原始扩展名

代码语言:javascript
复制
    - `"%[filename:newname]"` -- the output filename we set up in the previous step
票数 1
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/641268

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档