首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >命令行工具将图像文件调整到最大大小并更改大小写。

命令行工具将图像文件调整到最大大小并更改大小写。
EN

Stack Overflow用户
提问于 2014-11-28 15:47:34
回答 1查看 4K关注 0票数 2

假设您有一个包含大量图像的文件夹。每个图像的文件大小和扩展名不同,您希望以相同的格式保持一致。有没有办法:

  • 使文件名大写和扩展小写(如果还没有):EXAMPLE.jpg
  • 如果当前类型不是jpg,则将图像转换为.jpg。(可能是png、tiff、bmp、psd等)
  • 将图像转换为最大值。5MB如果目前较大,但只有当它大于5MB时才调整大小,否则保持原样。图像尺寸不需要更改。

这是如何做到的呢?

对不起,如果这是一个过于宽泛的问题,但我已经寻找了各种工具,如BulkRenameUtility,Flash重命名器,JPEG大小,ReaConverter。所有优秀的工具,但它们都使用GUI和我想要创建一个解决方案,每天晚上运行在windows服务器上自动。重命名部分可以使用命令行为BRU或闪存重命名器,但转换为JPEG最大文件大小.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-08 21:59:34

您可以使用ImageMagick、Bash和tr命令行工具来完成这个任务。使用以下元素编写shell脚本。

首先,重命名文件:

代码语言:javascript
复制
 file_orig=${input}                                           # ex.: "aBcD.png"
 file_upper=$(echo $(basename ${input}) | tr "[a-z]" "[A-Z]") # ex.: "ABCD"

然后,使用ImageMagick的convert命令将其转换为JPEG:

代码语言:javascript
复制
 convert ${input} ${file_upper}.jpg                           # ex.: "ABCD.jpg"

这是最基本的用法。它还没有应用关于文件大小的条件。您可以使用基本shell命令检查文件大小,并以检查结果为条件运行命令。

但是这里有一个更优雅的方法: ImageMagick (如果它的版本是IMV6.5.8-2或更高版本)可以使用-define jpeg:extent={size}进行JPEG输出,其中{size}是用文件大小后缀(例如:5000kb或5 MByte的5mb )指定的。

它的工作方式如下:convert创建多个版本的JPEG输出。它尝试使用不同的质量设置,直到它尽可能接近给定的文件大小而不超过它。它会重复地将结果写入临时文件。找到适当的质量+大小后,它会将最终图像输出到给定的输出文件名,并删除临时文件:

代码语言:javascript
复制
 convert                   \
   -define jpeg:extent=5mb \
    ${input}               \
    ${file_upper}.jpg  

ImageMagick也适用于Windows。(我在Linux和Mac上进行了测试。)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27192093

复制
相关文章

相似问题

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