Image-Similar
view release on metacpan or search on metacpan
examples/gd.pl view on Meta::CPAN
#!/home/ben/software/install/bin/perl
use warnings;
use strict;
use Image::Similar 'load_image';
use GD;
my $gd = GD::Image->newFromPng ("t/images/chess/chess-100.png");
my $is = load_image ($gd);
lib/Image/Similar.pod view on Meta::CPAN
The return value is an Image::Similar object.
Using L<GD>:
use Image::Similar 'load_image';
use GD;
my $gd = GD::Image->newFromPng ("t/images/chess/chess-100.png");
my $is = load_image ($gd);
Using L<Image::Imlib2>:
use Image::Similar 'load_image';
use Image::Imlib2;
my $imlib2 = Image::Imlib2->load ("t/images/chess/chess-100.png");
my $is = load_image ($imlib2);
lib/Image/Similar.pod view on Meta::CPAN
This is used in conjunction with L<Image::PNG::Libpng/png_compare>
(version 0.42 or later) to check that Image::Similar has correctly
read in the image, by writing out Image::Similar's internal data as a
PNG file.
=head2 load_image_gd
use Image::Similar 'load_image';
use GD;
my $gd = GD::Image->newFromPng ("t/images/chess/chess-100.png");
my $is = load_image ($gd);
This is the internal routine used by L</load_image> to load L<GD>
images.
=head2 load_image_imlib2
This is the internal routine used by L</load_image> to load
L<Image::Imlib2> images.
my $builder = Test::More->builder;
binmode $builder->output, ":utf8";
binmode $builder->failure_output, ":utf8";
binmode $builder->todo_output, ":utf8";
binmode STDOUT, ":encoding(utf8)";
binmode STDERR, ":encoding(utf8)";
eval "use GD;";
if ($@) {
plan (skip_all => "GD not available: $@ error on loading");
}
my $chess100 = GD::Image->newFromPng ("$Bin/images/chess/chess-100.png");
my $is = load_image ($chess100);
ok ($is);
my $chess200 = GD::Image->newFromPng ("$Bin/images/chess/chess-200.png");
my $is200 = load_image ($chess200);
ok ($is200);
cmp_ok ($is->diff ($is200), '<', 0.1);
my $chess300 = GD::Image->newFromPng ("$Bin/images/chess/chess-300.png");
my $is300 = load_image ($chess300);
ok ($is300);
cmp_ok ($is->diff ($is300), '<', 0.1);
cmp_ok ($is200->diff ($is300), '<', 0.1);
my $lfile = "$Bin/../xt/lena-gercke.jpg";
if (-f $lfile) {
my $lena = GD::Image->newFromJpeg ($lfile);
my $img = load_image ($lena);
for my $s (1..10) {
my $size = $s * 100;
my $lenax = GD::Image->newFromPng ("$Bin/images/lenagercke/lena-$size.png");
my $imgx = load_image ($lenax);
cmp_ok ($img->diff ($imgx), "<", 0.1, "$size of lena looks like original");
}
cmp_ok ($is->diff ($img), ">", 0.1,
"Lena Gercke doesn't look like a chessboard to me");
}
done_testing ();
exit;
utility/read-image.go view on Meta::CPAN
fmt.Printf("*")
} else if grey < 0.8 {
fmt.Printf(":")
} else if grey < 0.9 {
fmt.Printf(".")
} else {
fmt.Printf(" ")
}
}
func (is ImageSignature) WritePng(fileName string) {
}
func (is ImageSignature) GetData(Image image.Image) {
var i int = 0
is.width = Image.Bounds().Max.Y - Image.Bounds().Min.Y + 1
is.height = Image.Bounds().Max.X - Image.Bounds().Min.X + 1
is.data = make([][]byte, is.height)
for y := Image.Bounds().Min.Y; y < Image.Bounds().Max.Y; y++ {
var j int = 0
utility/read-image.go view on Meta::CPAN
0.071 * float64(b))/float64(0xffff)
is.data[i][j] = uint8(grey*256)
j++
}
i++
}
}
func makeSignature(Image image.Image) (is ImageSignature) {
is.GetData(Image)
is.WritePng("grey.png")
return is
}
func readImage(name string) {
jpeg, err := os.Open(name)
if err != nil {
fmt.Fprintf(os.Stderr, "Error opening %s: %s\n",
name, err)
return
}
( run in 0.430 second using v1.01-cache-2.11-cpan-0a6323c29d9 )