File::Find::Rule::ImageSize - rules for matching image dimensions


File-Find-Rule-ImageSize documentation Contained in the File-Find-Rule-ImageSize distribution.

Index


Code Index:

NAME

Top

File::Find::Rule::ImageSize - rules for matching image dimensions

SYNOPSIS

Top

 use File::Find::Rule::ImageSize;
 # find images bigger than 20x20
 my @images = find( file => image_x => '>20', image_y => '>20', in => '.' );

DESCRIPTION

Top

File::Find::Rule::ImageSize interfaces Image::Size to File::Find::Rule enabling you to find files based upon their dimensions. Number::Compare is used so that the sizes may be relative values.

->image_x( @sizes ) =head2 ->image_y( @sizes )

Match only things with their dimensions constrained by @sizes. The specification can be a relative, as implemented by Number::Compare.

AUTHOR

Top

Richard Clamp <richardc@unixbeard.net>, from an idea by Mark Fowler.

COPYRIGHT

Top

SEE ALSO

Top

File::Find::Rule, Number::Compare, Image::Size


File-Find-Rule-ImageSize documentation Contained in the File-Find-Rule-ImageSize distribution.

# $Id: ImageSize.pm 875 2002-10-29 11:05:17Z richardc $
package File::Find::Rule::ImageSize;
use strict;

use File::Find::Rule;
use base qw( File::Find::Rule );
use vars qw/$VERSION @EXPORT/;
$VERSION = '0.03';
@EXPORT = @File::Find::Rule::EXPORT;

use Number::Compare;
use Image::Size qw( imgsize );

my $dimension;
sub File::Find::Rule::image_x { $dimension = 'x'; &_match_dimension }
sub File::Find::Rule::image_y { $dimension = 'y'; &_match_dimension }

sub _match_dimension {
    my $self = shift()->_force_object;
    my $axis = $dimension;
    my @rules = map { Number::Compare->new($_) } @_;
    $self->exec( sub {
                     my %h; @h{'x', 'y'} = imgsize($_);
                     my $val = $h{ $axis };
                     return unless defined $val;
                     for (@rules) { return 1 if $_->($val) }
                     return;
                 } );
}

1;