NAME GD::Image::CopyIFS - fractal-based image resizing SYNOPSIS # zoom in on an area of an image use GD::Image::CopyIFS; my $width = 64; my $height = 60; my $scale = 4; my $neww = $scale * $width; my $newh = $scale * $height; my $src_file = 'src.jpeg'; my $src_img = GD::Image->newFromJpeg($src_file, 1); my $dst_img = GD::Image->new($neww, $newh, 1); my @opts = ($src_img, 0, 0, 110, 120, $neww, $newh, $width, $height); $dst_img->copyIFS(@opts); my $dst_file = 'dst.jpeg'; open(my $fh, '>', $dst_file) or die "Cannot open $dst_file: $!"; binmode $fh; print $fh $im->jpeg; close $fh; # create a resized image scaled by a factor $scale use GD::Image::CopyIFS; my $src_file = 'src.jpeg'; my $src_img = GD::Image->newFromJpeg($src_file, 1); my $scale = 2.45; my $dst_img = GD::Image->thumbIFS($src_img, scale => $scale); my $dst_file = 'dst.jpeg'; open(my $fh, '>', $dst_file) or die "Cannot open $dst_file: $!"; binmode $fh; print $fh $im->jpeg; close $fh; DESCRIPTION This module adds to GD::Image of the GD module two methods: copyIFS, used to copy and rescale an area of one image onto another image, and thumbIFS, used to create a resized image from an original. The copyIFS method is used analagously to the copyResized or copyResampled methods of the GD module. See the pod documentation for GD::Image::CopyIFS for more details. The algorithm employed uses what is known as a fractal interpolating function, which uses an Iterated Function System (IFS) to interpolate functions specified at discrete points. The basic procedure is to create an IFS based on the pixel colors of an image, and then from this construct a new IFS based on the parameters specified when zooming in on an area of the image or when resizing. A random iteration algorithm is then used to construct an image from this new IFS. For details, see http://ecommons.uwinnipeg.ca/archive/00000026/. Note that this algorithm may give good results for images of natural objects, as there generally is a fractal nature present in most such shapes. It typically will not give good results for more geometric shapes, such as lettering. INSTALLATION The GD module is a prerequisite for this module, and a C compiler will be needed. Installation follows the standard perl Makefile.PL make make test make install procedure. The tests will create, in the t/ subdirectory, zoomed-in areas and a resized image based on the original lena.jpeg image. These images are all named "*_ifs.jpeg"; one can compare these with the analagous "*_resized.jpeg" and "*_resampled.jpeg" images made with, respectively, the "copyResized" and "copyResampled" methods of GD. COPYRIGHT Copyright (c) 2005, by Randy Kobes . All rights reserved. This package is free software; you can redistribute it and/or modify it under the same terms as Perl itself.