建立於: 8個月前 ( 更新: 8個月前 )
這版算是我後來的進化版本了,可用Docker跑ubuntu即可安裝如下套件
如果你的容器環境使用 phpenv 安裝上應該也不會有問題
sudo apt install imagemagick webp
如果您的環境並不是ubuntu,我們可以透過docker掛載的方式輕鬆達成,參考指令如下:
docker run --rm -v $(pwd):/mnt -w /mnt -ti ubuntu bash
以下是我使用的bash,主要針對jpg及png進行優化,檔案的顏色可能會略為失真,請在測試站上確認符合您自己的預期
#!/bin/bash
SIZE=600
for o in $(find . -name *.jpg -not -regex '.*orignal_.*\.*' -type f -size +${SIZE})
do
FILENAME=$(basename "${o}")
FOLDER=$(dirname -- $(realpath -- ${o}))
echo $FOLDER
TARGET="${FOLDER}/orignal_${FILENAME}"
if [ ! -f $TARGET ];then
echo "backup orignal ${FILENAME}"
cp "${o}" "${TARGET}"
WxH=$(identify ${o}|awk '{print $3}')
#convert ${o} -quality 80 -resize ${WxH} -strip $o
convert ${o} -quality 80 -resize 800x\> -strip $o
else
echo "Skip ${FILENAME}"
fi
done
for o in $(find . -name *.png -not -regex '.*orignal_.*\.*' -type f -size +${SIZE})
do
FILENAME=$(basename "${o}")
FOLDER=$(dirname -- $(realpath -- ${o}))
echo $FOLDER
TARGET="${FOLDER}/orignal_${FILENAME}"
if [ ! -f $TARGET ];then
echo "backup orignal ${FILENAME}"
cp "${o}" "${TARGET}"
WxH=$(identify ${o}|awk '{print $3}')
#convert ${o} -quality 85 -resize ${WxH} -strip $o
convert ${o} -quality 85 -resize 800x\> -strip $o
else
echo "Skip ${FILENAME}"
fi
done
主要參數說明,從bash中不難了解在進行convert轉換前我會先備一份起來,並且prefix命名為orignal_。
-quality | 調高顏色會更接近原色。 |
-resize | 這裡代表如果寬超出800px的圖,最大就縮到800px |
在此提供另一個刪除orgnal_檔案供參考,刪除目錄下包含所有子目錄,名稱為original_開頭,類型為檔案的資料。
find . -name original_* -type f -delete
No Comment
Post your comment