by Devin Yang

建立於: 11個月前 ( 更新: 11個月前 )

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

公鑰驗證之多個ssh的組態檔

我們使用ssh公鑰驗證時,通常會在~/.ssh/config加入相關設定。 如果說有些是公司用的或是家裡用的,是否可以使用多個config呢? 其實可以的,我們能git透過Include載入公司共用,有版本控制的config。

linux, centos, rsnapshot

如何在CentOS 7安裝rsnapshot

rsnapshot是一個採用rsync為基礎的工具,他可以進行快照式的增量備份,不過我們在CentOS下了which rsnapshot怎麼沒有這個指令呢,用yum install rsnapshot沒有辨法安裝?

linux,termux

如何在android手機背景播放mp4或webm

我有些Youtube下載下來的音檔想要在背景播放,我知道如何做啦?