Snippets - With php
NOTE: Most of the IM snippets have been tested on IM version 6.3.5 There may be some differences if you are using the code on other versions.
Row of images - Anthony 15/7/2008
This code is based on a shell script by Anthony Thyssen and creates a row of images and a associted "colour map". The two images can be used by the php function ImageColorAt( ) to create a type of Imagemap. The images are resized; have their file name added and modified to look like a poleroid photo. This needs a later version of Imagemagick as it uses the -layers operator.
<?php// Code modified from a shell script by Anthony Thyssen// Default location for the first image// This can be any number as I correctly handle the formating// of images which may generate given a negative offset.$center = "0";// Distance to the next images center. This can be negative!$offset = "100";// Final image background canvas color$background = "LightSteelBlue";// Setup image names for laying out the images$layer_image = "image.miff";$layer_map = "layer_map.miff";// Create an array of all the png images in the folder$image_array = glob( "*.png" );// Find how many images there are in the array and remove 1 as we start at 0 not 1$count = count( $image_array );$count = $count -1;// Create an array of colours to use for the map$colours = array( 'Red', 'Blue', 'brown', 'Yellow', 'Green' );// Loop through the array of imagesfor ( $i=0; $i<=$count; $i++ ){// Remove the .png extension - this will be replaced by a miff extension// Need to do as we need to rename some images to prevent overwritting$file = str_replace( '.png', '', $image_array[$i] );// Create tempory image name formats$temp_map = "0.miff";$temp_image = "1.miff";// Modify the image - thumbnail, polaroid image to a temp file.// I used super-sampled polariod to make the result better// This could have been done in a previous step to this loop$cmd = " -size 500x500 $image_array[$i] -matte -thumbnail 240x240"." -set caption %t -bordercolor Lavender -background none"." -pointsize 12 -density 96x96 +polaroid -resize 50% -write $temp_image"." -channel A -threshold 50% +channel"." -fill {$colours[$i]} -colorize 100% $temp_map";// Carry out the commandexec("convert $cmd");// Now get image size, half it, and determine its virtual canvas// location so as to place it's center at the current position.// Could be done using getimagesize( )$xpos = exec("convert $temp_image -format \"%[fx: $center - w/2 ]\" info:");$ypos = exec("convert $temp_image -format \"%[fx: - h/2 ]\" info:");// $xpos may be positive, in which case it needs to have a '+' sign// $ypos is always negative ( but check its formating anyway )if ( $xpos > 0 ) { $xpos = "+".$xpos; }if ( $ypos > 0 ) { $ypos = "+".$ypos; }$pos = "$xpos$ypos";// Create new tempory images with the position offset - overwritting the originalexec("convert -page $pos $temp_image $temp_image");exec("convert -page $pos $temp_map $temp_map");// Increment position for next image$center = $center + $offset;// Build up the images into the final orderexec("convert -background $background $layer_image $temp_image -layers merge $layer_image");exec("convert -background black $layer_map $temp_map -layers merge $layer_map");}// Convert the images from a miff format to a browser readable oneexec("convert $layer_image +repage output.jpg");exec("convert $layer_map +repage output_map.gif");// Remove the tempory imagesforeach ( glob( "*.miff" ) as $filename ) {unlink( $filename );}?><img src="output.jpg"><br><img src="output_map.gif">

For more examples and information check out the main Imagemagick section.
Batch file ViewCheck size before resizing View
Dividing an image View
Fonts Installed view View
Get image data into a variable 1 View
Get image data into a variable 2 View
Gravity option View
New image size in variable View
Row of images View
Setup Information View
Use an array View
Warhol effect View