Image 如何缩小和优化图像?
我目前正在CentOS 6上使用Image 如何缩小和优化图像?,image,centos,jpeg,jpegoptim,Image,Centos,Jpeg,Jpegoptim,我目前正在CentOS 6上使用jpegoptim。它允许您设置质量和文件大小基准。但是,它不允许您调整图像的大小 我有5000个所有文件大小和尺寸的图像,我想缩小到最大宽度和最大文件大小 例如,我希望将所有图像的最大宽度降低到500像素和50KB 如何缩小和优化所有这些图像?您可以使用ImageMagick来实现这一点,但很难说明确的方法,因为这取决于所有文件是否在同一目录中,以及您是否拥有或可以使用GNU并行 通常,您可以将单个图像的大小减小到500的特定宽度,如下所示: # Resize
jpegoptim
。它允许您设置质量和文件大小基准。但是,它不允许您调整图像的大小
我有5000个所有文件大小和尺寸的图像,我想缩小到最大宽度和最大文件大小
例如,我希望将所有图像的最大宽度降低到500像素和50KB
如何缩小和优化所有这些图像?您可以使用ImageMagick来实现这一点,但很难说明确的方法,因为这取决于所有文件是否在同一目录中,以及您是否拥有或可以使用GNU并行 通常,您可以将单个图像的大小减小到500的特定宽度,如下所示:
# Resize image to 500 pixels wide
convert input.jpg -resize 500x result.jpg
find . -type f -iname "*.jpg" -size -51200c -exec convert {} -define jpeg:extent=50KB {} \;
其中input.jpg
和result.jpg
允许是同一个文件。如果要计算高度,可以使用:
# Resize image to 500 pixels high
convert input.jpg -resize x500 result.jpg
因为尺寸指定为宽度x高度
如果您只想减少大于500像素的文件,而不进行任何大小调整(提高分辨率),请将
添加到维度:
# 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并行来更快地完成这项工作
请注意,如果您有一个小于500px的文件,ImageMagick将不会处理它,因此,如果它小于500像素宽且也大于50kB,则不会减少文件大小。要捕获不太可能出现的边缘情况,您可能需要在之后运行另一个find
,以查找任何超过50kB的文件,然后通过convert
运行它们,但不使用-resize
,类似于以下内容:
# Resize image to 500 pixels wide
convert input.jpg -resize 500x result.jpg
find . -type f -iname "*.jpg" -size -51200c -exec convert {} -define jpeg:extent=50KB {} \;
使用ImageMagick可以做到这一点,但很难说明确的方法,因为这取决于所有文件是否在同一目录中,以及您是否拥有或可以使用GNU并行 通常,您可以将单个图像的大小减小到500的特定宽度,如下所示:
# Resize image to 500 pixels wide
convert input.jpg -resize 500x result.jpg
find . -type f -iname "*.jpg" -size -51200c -exec convert {} -define jpeg:extent=50KB {} \;
其中input.jpg
和result.jpg
允许是同一个文件。如果要计算高度,可以使用:
# Resize image to 500 pixels high
convert input.jpg -resize x500 result.jpg
因为尺寸指定为宽度x高度
如果您只想减少大于500像素的文件,而不进行任何大小调整(提高分辨率),请将
添加到维度:
# 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并行来更快地完成这项工作
请注意,如果您有一个小于500px的文件,ImageMagick将不会处理它,因此,如果它小于500像素宽且也大于50kB,则不会减少文件大小。要捕获不太可能出现的边缘情况,您可能需要在之后运行另一个find
,以查找任何超过50kB的文件,然后通过convert
运行它们,但不使用-resize
,类似于以下内容:
# Resize image to 500 pixels wide
convert input.jpg -resize 500x result.jpg
find . -type f -iname "*.jpg" -size -51200c -exec convert {} -define jpeg:extent=50KB {} \;
首先/也使用imagemagick?首先/也使用imagemagick?非常感谢。到目前为止,我使用了jpegoptim,但是降低分辨率和缩小尺寸会得到更好的图像。非常感谢。非常感谢你。到目前为止,我使用了jpegoptim,但是降低分辨率和缩小尺寸会得到更好的图像。非常感谢。