#!/usr/bin/perl # This is an example script demonstrating Image::RGBA interpolation. # Use it to scale an image by any factor. use strict; use warnings; use Image::Magick; use lib 'lib'; use Image::RGBA; if ($#ARGV ne 3) { die "Incorrect number of arguments\n" . "Usage $0 (simple|linear|spline16) \n" . "e.g. $0 1.618 spline16 input.jpg output.png\n"; } my ($scale, $sample, $in_file, $out_file) = @ARGV; # sort-out the input image my $input = new Image::Magick; $input->Read ($in_file); my $rgba = new Image::RGBA (image => $input, sample => $sample); # the output image needs a size my $width = int ($scale * $input->Get ('width')); my $height = int ($scale * $input->Get ('height')); my $output = new Image::Magick (size => "$width" ."x". "$height"); $output->Read ("NULL:black"); $output->Transparent (color => 'black'); my $rgba_out = new Image::RGBA (image => $output); # iterate through all the rows of the _output_ image for my $v (0 .. $height - 1) { for my $u (0 .. $width - 1) { $rgba_out->Pixel ($u, $v, $rgba->Pixel ($u/$scale, $v/$scale)); } print STDERR "#"; } print STDERR "\n"; $rgba_out->Image->Write ($out_file); 1;