#!/usr/bin/perl
use strict;
use warnings;
use Image::Magick;
use Image::Magick::PolyText::FreeType;
use Time::Elapsed qw(elapsed);
# ------------------------------------------------
# Set up
# ------
print "Image::Magick V $Image::Magick::VERSION. \n";
print "Image::Magick::PolyText::FreeType V $Image::Magick::PolyText::FreeType::VERSION. \n";
print "\n";
my $start_time = time();
my $x_1 = [100, 150, 200, 250, 300, 350, 400, 450, 500, 550, 600, 650, 700];
my $y_1 = [100, 147, 184, 199, 190, 159, 114, 65, 25, 3, 5, 30, 73];
my $x_2 = [100, 150, 200, 250, 300, 350, 400, 450, 500, 550, 600, 650, 700];
my $y_2 = [250, 297, 334, 349, 340, 309, 264, 215, 175, 153, 155, 180, 223]; # $y_1[*] + 150.
my $image = Image::Magick -> new(size => '800 x 400');
my $result = $image -> Read('xc:white');
$result = $image -> Set(font => '/usr/share/fonts/type1/gsfonts/n019003l.pfb');
die $result if $result;
my $polytext_1 = Image::Magick::PolyText::FreeType -> new
({
debug => 0,
fill => 'Red',
image => $image,
pointsize => 16,
rotate => 1,
slide => 0.1,
stroke => 'Red',
strokewidth => 1,
text => 'Draw.text.along.a.polyline', # Can't use spaces!
x => $x_1,
'y' => $y_1, # y eq tr, so emacs' syntax highlighting is stuffed without ''.
});
my $polytext_2 = Image::Magick::PolyText -> new
({
debug => 0,
fill => 'Red',
image => $image,
pointsize => 16,
rotate => 1,
slide => 0.2,
stroke => 'Red',
strokewidth => 1,
text => 'Draw.text.along.a.polyline', # Can't use spaces!
x => $x_2,
'y' => $y_2, # y eq tr, so emacs' syntax highlighting is stuffed without ''.
});
# Draw the curves
# ---------------
$polytext_1 -> draw({stroke => 'red'});
$polytext_1 -> highlight_data_points({stroke => 'black'});
$polytext_2 -> draw({stroke => 'green'});
$polytext_2 -> highlight_data_points({stroke => 'blue'});
# Draw the text
# -------------
$polytext_1 -> annotate();
#$polytext_2 -> annotate();
# Write the image to disk
# -----------------------
my $output_file_name = 'ptf.png';
$result = $image -> Write($output_file_name);
die $result if $result;
print "Wrote $output_file_name. \n";
print "Image depth: @{[$image -> get('depth')]} bits per pixel. \n";
print "That took @{[elapsed(time() - $start_time)]}. \n";