by Devin Yang

建立於: 10個月前 ( 更新: 9個月前 )

這版算是我後來的進化版本了,可用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

Tags: seo linux

Devin Yang

文章內容無法一一說明,如果您有什麼不了解處,歡迎提問哦:)

No Comment

Post your comment

需要登入才可留言!

類似的文章


linux

rsync如何自動允許ssh金鑰指紋

當我們第一次使用ssh進行主機連線時,會顯示一個主機金鑰的指紋確認。 有時進行一些自動化的排程使用rsync,或許遠端主機變更了,需要自動允許, 如何讓ssh自動允許指紋進行連線,不需使用互動模式手動去壓yes呢?

cli,linux,macos

如何用find刪除建立時間為準的舊檔案

這功能很好用,但要很小心,先看再刪,弄錯目錄會死很慘 

linux

無密碼詢問,產生ssh金鑰對

有時進行自動設定時,需要產生ssh的金鑰對。 命令列無密碼詢問,產生ssh金鑰對。