diff --git a/media-optimize-local.sh b/media-optimize-local.sh index abbc6f0..b745d98 100755 --- a/media-optimize-local.sh +++ b/media-optimize-local.sh @@ -1,56 +1,71 @@ #!/bin/bash IFS=" " - #media-optimize - find . -type f -iname "*.jp*" -size +50k | ( - while read p - do - nice -n 15 jpegoptim -m 76 "${p}" & - if [[ $(jobs -r -p | wc -l) -ge $(getconf _NPROCESSORS_ONLN) ]] - then - wait -n - fi - done; - wait - ) - find . -type f -iname "*.gif" -size +500k | ( - while read q - do - nice -n 15 gifsicle --batch -O3 --lossy=80 --colors=255 "${q}" & - if [[ $(jobs -r -p | wc -l) -ge $(getconf _NPROCESSORS_ONLN) ]] - then - wait -n - fi - done; - wait - ) - find . -type f -iname "*.png" -size +300k | ( - while read r - do - nice -n 15 oxipng -o max "${r}" & - if [[ $(jobs -r -p | wc -l) -ge $(getconf _NPROCESSORS_ONLN) ]] - then - wait -n - fi - done; - wait - ) - #compress-webp - find . -type f -iname "*.webp" -size +200k | ( - while read s - do - nice -n 15 cwebp -mt -af -quiet "${s}" -o /tmp/"${s##.*\/}"_temp.webp - if [[ -f /tmp/"${s##.*\/}"_temp.webp ]] +#media-optimize +find . -type f -iname "*.jp*" -size +50k | ( + while read p + do + nice -n 15 jpegoptim -m 76 "${p}" & + if [[ $(jobs -r -p | wc -l) -ge $(getconf _NPROCESSORS_ONLN) ]] + then + wait -n + fi + done; + wait +) +find . -type f -iname "*.gif" -size +500k | ( + while read q + do + nice -n 15 gifsicle --batch -O3 --lossy=80 --colors=255 "${q}" & + if [[ $(jobs -r -p | wc -l) -ge $(getconf _NPROCESSORS_ONLN) ]] + then + wait -n + fi + done; + wait +) +#Specific compression for large GIF files +find . -type f -iname "*.gif" -size +512000 | ( + while read p + do + while [[ $(stat -c%s "${p}" || 0) -ge 512000 ]] + do + frameamount=$(exiftool -b -FrameCount "${p}") + nice -n 15 gifsicle "${p}" $(seq -f "#%g" 0 2 "${frameamount}") -O3 --lossy=80 --colors=255 -o "${p}" + done + done +) +find . -type f -iname "*.png" -size +500k | ( + while read r + do + nice -n 15 oxipng -o max "${r}" & + if [[ $(jobs -r -p | wc -l) -ge $(getconf _NPROCESSORS_ONLN) ]] + then + wait -n + fi + done; +wait +) +#compress-webp +find . -type f -iname "*.webp" -size +50k | ( + while read s + do + #If file is not animated + if ! grep -v -q -e "ANIM" -e "ANMF" "${s}" + then + cwebp -mt -af -quiet "${s}" -o /tmp/"${s##.*\/}"_temp.webp + if [ -f /tmp/"${s##.*\/}"_temp.webp ] then - size_new=$(stat -c%s /tmp/"${s##.*\/}"_temp.webp) - size_original=$(stat -c%s "${s}") - if [[ "${size_original}" -gt "${size_new}" ]] + size_new=$(stat -c%s /tmp/"${s##.*\/}"_temp.webp || 0) + size_original=$(stat -c%s "${s}" || 0) + if [ "$size_original" -gt "$size_new" ] then - mv /tmp/"${s##.*\/}"_temp.webp "${s}" + mv /tmp/"${s##.*\/}"_temp.webp "$s" else rm /tmp/"${s##.*\/}"_temp.webp fi fi - done; - wait - ) + fi + done; + wait +)