gpt4 book ai didi

image - 如何缩小和优化图像?

转载 作者:行者123 更新时间:2023-12-04 19:30:15 31 4
gpt4 key购买 nike

我目前在 CentOS 6 上使用 jpegoptim。它可以让您设置质量和文件大小基准。但是,它不允许您调整图像大小。

我有 5000 张各种文件大小和尺寸的图像,我想将它们缩小到最大宽度和最大文件大小。

例如,我想将所有图像的最大宽度缩小到 500 像素和 50 KB。

如何缩小和优化所有这些图像?

最佳答案

您可以使用 ImageMagick 执行此操作,但很难明确说明使用哪种方法,因为这取决于所有文件是否都在同一目录中以及您是否拥有或可以使用 GNU Parallel。

通常,您可以像这样将单个图像的大小缩小到特定宽度 500:

# Resize image to 500 pixels wide
convert input.jpg -resize 500x result.jpg

其中 input.jpgresult.jpg 允许是同一个文件。如果你想做高度,你会使用:

# Resize image to 500 pixels high
convert input.jpg -resize x500 result.jpg

因为尺寸指定为 width x height

如果你只想缩小大于 500 像素的文件,而不做任何 up-resing(增加分辨率),你添加 > 到维度:

# Resize images wider than 500 pixels down to 500 pixels wide
convert image.jpg -resize '500x>' image.jpg

如果要减小结果的文件大小,必须使用-define 来引导JPEG 编码器,如下所示:

# Resize image to no more than 500px wide and keep output file size below 50kB
convert image.jpg -resize '500x>' -define jpeg:extent=50KB result.jpg

因此,现在您需要围绕所有文件放置一个循环:

#!/bin/bash
shopt -s nullglob
shopt -s nocaseglob

for f in *.jpg; do
convert "$f" -resize '500x>' -define jpeg:extent=50KB "$f"
done

如果您喜欢使用所有 CPU 内核,可以使用 GNU Parallel 来更快地完成工作。

请注意,如果您有一个小于 500 像素宽的文件,ImageMagick 将不会处理它,因此如果它小于 500 像素宽且大于 50kB,则文件大小不会减少。为了捕捉这种不太可能的边缘情况,您可能需要在之后运行另一个 find 以查找任何超过 50kB 的文件,然后通过 convert 运行它们但不使用 -resize,像这样:

find . -type f -iname "*.jpg" -size -51200c -exec convert {} -define jpeg:extent=50KB {} \;

关于image - 如何缩小和优化图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34522269/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com