Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save FintanK/69d959e2593f7f68210dcb3260a744ab to your computer and use it in GitHub Desktop.
Save FintanK/69d959e2593f7f68210dcb3260a744ab to your computer and use it in GitHub Desktop.
# 1. TAKES A FOLDER OF IMAGES (in this case /supplied-images)
# 2. OPTIMIZES THEIR FORMAT TO MAKE AS LIGHTWEIGHT AS POSSIBLE FOR THE CLIENT DEVICE
# 3. JOB CAN TAKE TIME BUT THIS IS VERY POWERFUL WHEN ALLOWED TO RUN OVER 10 MINUTES
# 4. GENERATES DIFFERENT SIZES - Maintanins aspect ratio - /www/images
# 5. Also generates a JSON file referencing each image
# SIZES - xsmall, small, medium, large, xlarge, xxlarge, xxxlarge
# Delete folder if it already exists
rm -r -f www/images
# Create sub-folders for each size
mkdir -p www/images
mkdir -p www/images/xsmall
mkdir -p www/images/small/
mkdir -p www/images/medium/
mkdir -p www/images/large
mkdir -p www/images/xlarge
mkdir -p www/images/xxlarge
mkdir -p www/images/xxxlarge
# ENTER THE DIRECTORY WHERE THE USER PLACED THEIR IMAGES (IDEALLY ZIP FORMAT)
cd supplied-images
# CREATE A JSON FILE TO STORE OUR IMAGE INFORMATION ON THE CLIENT DEVICE
touch ../www/images.json
echo '{' > ../www/images.json
echo '"images":[' >> ../www/images.json
for f in $PWD/*.jpg; do
width=$(identify -format %w $f)
filename=$(basename $f .jpg)
echo '{' >> ../www/images.json
echo ' "url":"'${filename}'.jpg", ' >> ../www/images.json
echo ' "description": "YOUR TITLE" ' >> ../www/images.json
echo '},' >> ../www/images.json
# WHERE THE MAGIC HAPPENS http://stackoverflow.com/questions/7261855/recommendation-for-compressing-jpg-files-with-imagemagick#_=_
convert "${filename}.jpg" -size ${width}/7 -strip -interlace Plane -gaussian-blur 0.05 -quality 85% "../www/images/xsmall/${filename}.jpg";
convert "${filename}.jpg" -size ${width}/6 -strip -interlace Plane -gaussian-blur 0.05 -quality 85% "../www/images/small/${filename}.jpg";
convert "${filename}.jpg" -size ${width}/5 -strip -interlace Plane -gaussian-blur 0.05 -quality 85% "../www/images/medium/${filename}.jpg";
convert "${filename}.jpg" -size ${width}/4 -strip -interlace Plane -gaussian-blur 0.05 -quality 85% "../www/images/large/${filename}.jpg";
convert "${filename}.jpg" -size ${width}/3 -strip -interlace Plane -gaussian-blur 0.05 -quality 85% "../www/images/xlarge/${filename}.jpg";
convert "${filename}.jpg" -size ${width}/2 -strip -interlace Plane -gaussian-blur 0.05 -quality 85% "../www/images/xxlarge/${filename}.jpg";
convert "${filename}.jpg" -size ${width} -strip -interlace Plane -gaussian-blur 0.05 -quality 85% "../www/images/xxxlarge/${filename}.jpg";
echo "Finished Processing: ${filename}.jpg ";
done
echo ']}' >> ../www/images.json
echo "Image processing complete!";
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment