From a80c4565c450443c8178af8d3f58fe5a44ecc4fc Mon Sep 17 00:00:00 2001 From: anthony Date: Thu, 22 Mar 2012 00:09:16 +0000 Subject: [PATCH] --- PerlMagick/demo/annotate_words.pl | 71 +++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100755 PerlMagick/demo/annotate_words.pl diff --git a/PerlMagick/demo/annotate_words.pl b/PerlMagick/demo/annotate_words.pl new file mode 100755 index 000000000..fcb09059f --- /dev/null +++ b/PerlMagick/demo/annotate_words.pl @@ -0,0 +1,71 @@ +#!/usr/bin/perl +# +# annotate_words.pl +# +# Take the internal string, split it into words and try to annotate each +# individual word correctly, so as to control spacing between the words +# under program control. +# +# A demonstration of using QueryFontMetrics(), by passing it exactly the same +# arguments as you would for Annotate(), to determine the location of the +# text that is/was drawn. +# +# Example script from Zentara +# http://zentara.net/Remember_How_Lucky_You_Are.html +# +use warnings; +use strict; +use Image::Magick; + +my $image = Image::Magick->new; +$image->Set(size=>'500x200'); +my $rc = $image->Read("xc:white"); + +my $str = 'Just Another Perl Hacker'; +my (@words) = split ' ',$str; +#print join "\n",@words,"\n"; + +my ($x,$y) = (50,50); + +foreach my $word (@words){ + + $image->Annotate( + pointsize => 24, + fill => '#000000ff', #last 2 digits transparency in hex ff=max + text => $word, + gravity => 'NorthWest', + align => 'left', + x => $x, + y => $y, + ); + + my ( $character_width,$character_height,$ascender,$descender,$text_width, + $text_height,$maximum_horizontal_advance, $boundsx1, $boundsy1, + $boundsx2, $boundsy2,$originx,$originy) = + $image->QueryFontMetrics( + pointsize => 24, + text => $word, + gravity => 'NorthWest', + align => 'left', + x => $x, + y => $y, + ); + + print "$word ( $character_width, $character_height, + $ascender,$descender, + $text_width, $text_height, + $maximum_horizontal_advance, + $boundsx1, $boundsy1, + $boundsx2, $boundsy2, + $originx,$originy)\n"; + + my $n = $x + $originx + $character_width/3; # add a space + print "Next word at: $x + $originx + $character_width/3 => $n\n"; + $x = $n; + +} + +$image->Write("show:"); + +exit; + -- 2.40.0