From Tim's website
Revision as of 16:02, 9 August 2010 by Tim (talk | contribs)
Jump to: navigation, search

Saving space by compressing images

The following line finds .JPG files (case sensitive) below the current directory between 3MB and 4MB and passes them to a compression script in /srv/:

find . -name '*.JPG' -size 4M -execdir /srv/compress_jpg "{}" \;

My script tries compressing to 90% quality (very high), and keeps the result if it saves more than 30%

#!/bin/sh
# This script requires one argument - the image to compress

convert "$1" -quality 90 temp.JPG

ratio=$(echo "`stat -c%s temp.JPG`*100/`stat -c%s \"$1\"`" | bc)
useful=$(echo "$ratio<70" | bc)

if [ $useful == 0 ]; then
  echo "Image \'$1\' is already compressed efficiently"
  rm temp.JPG
else
  echo "Compressing \'$1\' at 90% quality to $ratio% of original size"
  mv temp.JPG "$1"
fi

Saving space by compressing videos

The following line finds .AVI files (case sensitive) below the current directory and passes them to a compression script in /srv/:

find . -name '*.AVI' -execdir /srv/compress_avi "{}" \;

My script works on videos that are not already x264 compressed, uses 500kbps for 320x240 video and 1500kbps for all other sizes

#!/bin/sh
# This script requires one argument - the video to re-encode using x264
file $1 | grep H.264 > /dev/null
if [ $? == 0 ]; then
  echo "Video $1 is already compressed with x264"
else
  file $1 | grep "320 x 240" > /dev/null
  if [ $? == 0 ]; then
     echo "Video $1 is 320 x 240, using 500 bps"
     bitrate=500
  else
     echo "Video $1 is not 320 x 240, using 1500 bps"
     bitrate=1500
  fi

  mkdir recoded
  nice mencoder -ovc x264 -x264encopts pass=1:threads=auto:frameref=3:turbo=1:bitrate=$bitrate -nosound -o /dev/null $1
  nice mencoder -ovc x264 -x264encopts pass=2:threads=auto:frameref=6:subq=6:qcomp=0.8:me=umh:bitrate=$bitrate -oac copy -o recoded/$1 $1
  rm divx2pass.log

fi

Creating index images

The following command will using the imagemagick command to resize and recompress images to a small file:

mogrify -resize 800x800 -quality 10 -monitor *