[ubuntu-uk] bulk graphics processing problem

Avi lists+uuk at avi.co
Sat Mar 19 23:10:29 UTC 2011


On Sat, 19 Mar 2011 15:01:05 +0000
John Levin <technolalia at gmail.com> wrote:

> hi all,
> 
> I need several series of numbered icons, from about 1 to 111 in 
> different colours. There must be a way of automating this through the 
> command line using imagemagick, but I haven't found a way of doing
> so, and my google - fu is giving very poor returns today. Any one got
> any ideas?

With no testing whatsoever, and only a passing (but google-enhanced)
familiarity with imagemagick, this is how I'd do it in Perl.

Basically, define an array of acceptable colours, then iterate through
the numbers 1 through 111. For each, pick two different colours at
random to use as foreground and background colours and create an icon.

I don't even know if the imagemagick command really does what I want it
to - I got it from [0] - and this could be done in any language, I just
can't remember how to do arrays in bash.


#! /usr/bin/perl

my @colours=("red","green","blue","orange");

for (my $i = 1; $i <= 111; $i++) {

	# Pick a random colour for fg and bg out of the array:
	my $fgcolour = $colours(int rand($#colours +1));
	my $bgcolour = $colours(int rand($#colours +1));

	# Check they're not equal
	while ($bgcolour == $fgoclour){
		$bgcolour = $colours(int rand($#colours +1));
	}

	# Concoct a command
	my $cmd="convert -size 16x16 xc:$colour ";
	$cmd .= "-pointsize 8 -fill green ";
	$cmd .= "-stroke black ";
	$cmd .= " -draw 'text 10,55 \"$i\"' ";
	$cmd .= "icon_$i.jpg ";

	# Run it
	`$cmd`;
}


[0] http://www.imagemagick.org/Usage/draw/#specifics
-- 
Avi



More information about the ubuntu-uk mailing list