Skip to content

Instantly share code, notes, and snippets.

@prcaen
Created May 13, 2015 12:42
Show Gist options
  • Save prcaen/eb039d63f34e76d93656 to your computer and use it in GitHub Desktop.
Save prcaen/eb039d63f34e76d93656 to your computer and use it in GitHub Desktop.

Revisions

  1. prcaen created this gist May 13, 2015.
    35 changes: 35 additions & 0 deletions compress_image.sh
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,35 @@
    #!/bin/bash
    # Install
    # This script need a API key from TinyPNG. See this page: https://tinypng.com/developers
    # It also need jq library, which can be install thanks to: `brew install jq`

    # Usage
    # cd to your folder. This script will compress all PNG or JPG files recursively.

    API_KEY="CHANGE_ME"

    if [ $API_KEY = "CHANGE_ME" ]
    then
    echo "CHANGE THE API_KEY in this file."
    exit 1
    fi

    if ! type "jq" > /dev/null
    then
    echo "Please install `jq`"
    exit 1
    fi

    find . -type f \( -name \*.jpg -o -name \*.png -o -name \*.jpeg \) -print0 | while IFS= read -r -d '' file; do
    echo "Compress file: $file"

    json=$(curl -sS --user api:$API_KEY --data-binary @$file https://api.tinypng.com/shrink)
    url=$(jq -n "$json.output.url" | sed -e 's/^"//' -e 's/"$//')

    echo "Compression OK. Old size: $(jq -n "$json.input.size"), new size: $(jq -n "$json.output.size"), ratio: $(jq -n "$json.output.ratio")"
    echo "Downloading the compressed file…"

    curl -sS $url > $file

    echo "Compressed file downloaded with success!"
    done