NAME
Imager::LineTrace - Line tracer
SYNOPSIS
use Imager::LineTrace;
my $img = Imager::LineTrace->new( file => $ARGV[0] ) or die Imager->errstr;
my $figures_ref = $img->line_trace();
DESCRIPTION
# Tracing clockwise from left top.
Expected Input and Result
# Enter a figure made up of line vertical or horizontal.
my $img = Imager::LineTrace->new( xsize => 16, ysize => 16 );
$img->box( filled => 1, color => 'white' );
$img->setpixel( x => 3, y => 2, color => '#000000' );
$img->line( x1 => 6, y1 => 5,
x2 => 9, y2 => 5, color => '#333333' );
$img->polyline( points => [
[ 2, 8 ],
[ 5, 8 ],
[ 5, 11 ]
], color => '#666666' );
$img->box( xmin => 10, ymin => 10,
xmax => 14, ymax => 14, color => '#999999' );
my $figures_ref = $img->line_trace();
# from Sample/bmp2figure.pl
my $i = 0;
foreach my $figure (@{$figures_ref}) {
print "-------- [", $i++, "] --------", "\n";
print "type : ", $figure->{type}, "\n";
print "trace_value : ", sprintf("0x%06X", $figure->{value}), "\n";
print "is_close: ", $figure->{is_closed}, "\n";
foreach my $p (@{$figure->{points}}) {
printf( "(%2d,%2d)\n", $p->[0], $p->[1] );
}
}
# -------- [0] --------
# type : Point
# trace_value : 0x000000
# is_closed : 0
# ( 3, 2)
# -------- [1] --------
# type : Line
# trace_value : 0x333333
# is_closed : 0
# ( 6, 5)
# ( 9, 5)
# -------- [2] --------
# type : Polyline
# trace_value : 0x666666
# is_closed : 0
# ( 2, 8)
# ( 5, 8)
# ( 5,11)
# -------- [3] --------
# type : Polygon
# trace_value : 0x999999
# is_closed : 1
# (10,10)
# (14,10)
# (14,14)
# (10,14)
Basic Overview
my $img = Imager::LineTrace->new( file => $path ) or die Imager->errstr;
# Trace black line on white.
my $figures_ref = $img->line_trace();
# If you want to trace counter-clockwise from left bottom.
$img->filp( dir => 'v' );
my $figures_ref = $img->line_trace();
# If you want to select color. ( 0:R, 1:G, 2:B, 3:Alpha )
my $figures_ref = $img->line_trace( channels => [0] );
# Or you want to trace with R,G and B.(this is defalt.)
my $figures_ref = $img->line_trace( channels => [0,1,2] );
# If you want to trace not black color.
my $figures_ref = $img->line_trace( ignore => 0 );
# If you want to trace many figure. (default "limit" is 1024)
my $figures_ref = $img->line_trace( limit => 10000 );
LICENSE
Copyright (C) neko.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
AUTHOR
neko <techno.cat.miau@gmail.com>