This is a bash script which accepts an image file, determines the width and height, and creates five vertical segments. It can be used to create a ‘puzzle’, tiles, CAPTCHA sequences and other interesting visual effects.
Code:
#!/bin/bash | |
if [ "$#" -le 2 ]; then | |
echo "usage: $0 <base directory> <image file> <segments> [<imagemagick directory>]" | |
else | |
BASE_DIR="$1" | |
ORIGINAL_IMAGE="$2" | |
SEGMENTS="$3" | |
if [ "$#" -ge 4 ]; then | |
IMAGEMAGICK_DIR="$4" | |
else | |
IMAGEMAGICK_DIR='' | |
fi | |
RESIZED_IMAGE="image.jpg" | |
IMAGE_WIDTH=300 | |
"$IMAGEMAGICK_DIR"convert "$BASE_DIR$ORIGINAL_IMAGE" -resize "$IMAGE_WIDTH"x +repage "$BASE_DIR$RESIZED_IMAGE" | |
IMAGE_DIMENSIONS=`"$IMAGEMAGICK_DIR"identify "$BASE_DIR$RESIZED_IMAGE" | cut -f 3 -d ' '` | |
SEGMENT_WIDTH=$((`echo "$IMAGE_DIMENSIONS" | cut -f 1 -d 'x'`/$SEGMENTS)) | |
SEGMENT_HEIGHT=`echo "$IMAGE_DIMENSIONS" | cut -f 2 -d 'x'` | |
echo '<?php' | |
echo define\(\'SEGMENTS\',"$SEGMENTS"\)\; | |
echo define\(\'IMAGE_WIDTH\',"$IMAGE_WIDTH"\)\; | |
echo define\(\'IMAGE_HEIGHT\',"$SEGMENT_HEIGHT"\)\; | |
echo define\(\'SEGMENT_WIDTH\',"$SEGMENT_WIDTH"\)\; | |
echo define\(\'SEGMENT_HEIGHT\',"$SEGMENT_HEIGHT"\)\; | |
for A in `seq 0 $(($SEGMENTS-1))` | |
do | |
SEGMENT_OFFSET=$(($SEGMENT_WIDTH * $A)) | |
"$IMAGEMAGICK_DIR"convert "$BASE_DIR$RESIZED_IMAGE" -crop "$SEGMENT_WIDTH"x"$SEGMENT_HEIGHT+$SEGMENT_OFFSET+0" "$BASE_DIR"segments/"$A".jpg | |
done | |
"$IMAGEMAGICK_DIR"convert "$BASE_DIR$RESIZED_IMAGE" -colorspace gray -level 0,80%,4.0 "$BASE_DIR"target.jpg | |
fi |
The last convert command creates a a faded version of the image.
Further customization could include segmentation on a different axis, different image file formats, etc.