我正在尝试制作一个批处理文件来压缩和调整一些图像的大小。它们是JPG和PNG。文件大小不一,但我只想修改大文件。
如果可能的话,我想知道我正在研究的每个选项的答案。
选项1:简单
正如上面的描述,我使用了一些基本的命令来实现这一点。
@echo off
for %%f IN (*.jpg *.png) DO magick mogrify -quality 70 -resize 960x540^> "%%f" "%%f"
我认为问题出在^>
。我只希望它能调整较大文件的大小,并适应最小的尺寸。然而,我找不到同时满足这两个条件的方法。此外,我不能让>
工作(所以我不确定我是否偏离轨道)。
选项2:复杂
这个家伙完成了一个相当不错的分析,调整(和压缩)图像的最佳方法。这让我把它加入到我的代码中来创建…
@echo off
for %%f IN (*.jpg *.png) DO magick mogrify -filter Triangle -define filter:support=2
-thumbnail 500 -unsharp 0.25x0.08+8.3+0.045 -dither None -posterize 136 -quality 82
-define jpeg:fancy-upsampling=off -define png:compression-filter=5
-define png:compression-level=9 -define png:compression-strategy=1
-define png:exclude-chunk=all -interlace none -colorspace sRGB "%%f" "%%f"
[为了更好地观看,手动刹车。]
我唯一不能在这里工作的是条件只改变文件大于500像素(>
)。这可能是我上面遇到的相同问题。
感谢你的帮助。
在DOS Windows下的Imagemagick中,请参阅https://legacy.imagemagick.org/Usage/windows/#conversion,其中显示:
所有不在双引号中的shell保留字符必须是如果在字面意义上使用,则使用'^'(插入符号或旋转符号)进行转义(即没有达到其通常的目的)。这些保留壳人物:"和 ;', '|', '(', ')', '& lt;"、"祝辞 ;', '^'.
这尤其意味着:特殊字符'>'(用于调整大小)几何)需要使用'^'进行转义。例如-resize 100x100^>。
同样,'内部调整大小'标志'^'需要加倍成为'^^'。
所以你可以使用双引号(没有转义)作为:
-resize "960x540^>"
或者可以转义^和>
-resize 960x540^^^>