簡體   English   中英

如何縮小和優化圖像?

[英]How to shrink and optimize images?

我目前在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像素的文件,而又不做任何向上縮放(提高分辨率),則在該尺寸上添加>

# 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來完成,以更快地完成工作。

請注意,如果文件的寬度小於500px,ImageMagick將不會對其進行處理,因此,如果文件寬度小於500像素且大於50kB,則文件大小也不會減少。 要捕獲這種不太可能的情況,您可能需要隨后再運行一次find查找超過50kB的文件,然后通過convert運行它們,但不使用-resize ,如下所示:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM