For my recent walking project I knew I was going to be taking lots of photos. I wanted a DOS script which would batch process the JPEG photos from my camera into the ‘full sized images’ (which are much smaller than the raw camera images), and the poloroid-like thumbnails.
However the ImageMagick instructions were missing a few things 1) they seem to be aimed at people using Unix / Linux scripts whereas I’m using DOS scripts and 2) they show how to do this processing on single images rather than on a whole directory of them.
It is quite easy to generate a random rotation angle with a simple bit of perl. The below line will generate a random floating point number between -7 and +7. I want both negative and positive numbers so that some of the poloroids will be tilted to the left, and others to the right.
perl -e "print rand() * 14 - 7"
I wanted to do all the processing through a DOS batch file so the next problem was how to get the random number into a DOS environmental variable. The answer is to use the ‘
for /f‘ command to assign the output of a command into a variable:
for /f %%i in ('perl -e "print rand() * 14 - 7"') do set ANGLE=%%i
At the time when I wrote this script generating a poloroid involved a whole sequence of commands. Something like below!
-bordercolor white -border 6 -bordercolor grey60 -border 1 -background none -rotate %ANGLE% -background black ( +clone -shadow 60x4+4+4 ) +swap -background white -flatten
My script still uses this long poloroid command, but you might want to use the new one word ‘
poloroid‘ command which is built straight into the latest versions of ImageMagick instead.
As well as generating the poloroid thumbnails it will also generate the full size website friendly images which are tagged with the website URL.
Your JPEG images are in an ‘images’ directory.
ProcessPhotos.bat [path of directory that contains 'images' directory]
A new directory called ‘generated’ in the input directory containing a full size image (which has been tagged with the website URL), and a poloroid thumbnail.
In order to use this script you will have to customise 1) the location of the ImageMagick executable 2) the reference to the drive – it is assuming a ‘f:’ drive here and 3) the website URL.
setlocal pushd . goto :skip_functions :makeThumb echo %1 set jpg=%1 set jpg=%jpg:~0,-4% echo %jpg% for /f %%i in ('perl -e "print rand() * 14 - 7"') do set ANGLE=%%i set ANNOTATE=-gravity south -stroke "#000C" -strokewidth 2 -annotate +0+20 "www.advancedhtml.co.uk" -stroke none -fill white -annotate +0+20 "www.advancedhtml.co.uk" set POLOROID=-bordercolor white -border 6 -bordercolor grey60 -border 1 -background none -rotate %ANGLE% -background black ( +clone -shadow 60x4+4+4 ) +swap -background white -flatten D:appsImageMagick-6.3.6-Q16convert %1 ( +clone -resize 600x -auto-orient %ANNOTATE% -compress JPEG -quality 70 -write %jpg%_full.jpg +delete ) -resize 180x -auto-orient %POLOROID% -compress JPEG -quality 80 -sampling-factor 2x1 -strip %jpg%_th.jpg goto :EOF :skip_functions f: cd %1images for /f %%i in ('dir /b *.jpg') do call :makeThumb %%i md %1generated move *_full.jpg ..generated move *_th.jpg ..generated popd endlocal