Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image 如何缩小和优化图像?_Image_Centos_Jpeg_Jpegoptim - Fatal编程技术网

Image 如何缩小和优化图像?

Image 如何缩小和优化图像?,image,centos,jpeg,jpegoptim,Image,Centos,Jpeg,Jpegoptim,我目前正在CentOS 6上使用jpegoptim。它允许您设置质量和文件大小基准。但是,它不允许您调整图像的大小 我有5000个所有文件大小和尺寸的图像,我想缩小到最大宽度和最大文件大小 例如,我希望将所有图像的最大宽度降低到500像素和50KB 如何缩小和优化所有这些图像?您可以使用ImageMagick来实现这一点,但很难说明确的方法,因为这取决于所有文件是否在同一目录中,以及您是否拥有或可以使用GNU并行 通常,您可以将单个图像的大小减小到500的特定宽度,如下所示: # Resize

我目前正在CentOS 6上使用
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,但是降低分辨率和缩小尺寸会得到更好的图像。非常感谢。