File Coverage

blib/lib/Image/Magick/Thumbnail/Simple.pm
Criterion Covered Total %
statement 9 63 14.2
branch 0 18 0.0
condition 0 18 0.0
subroutine 3 11 27.2
pod n/a
total 12 110 10.9


line stmt bran cond sub pod time code
1             package Image::Magick::Thumbnail::Simple;
2            
3 1     1   36488 use 5.008008;
  1         5  
  1         47  
4 1     1   6 use strict;
  1         2  
  1         36  
5 1     1   5 use warnings;
  1         7  
  1         1579  
6            
7             our $VERSION = '0.12';
8            
9             require Image::Magick;
10            
11             my $error = q{};
12            
13             #-------------------------------------------------------------------------------
14             # Module declaration
15             #-------------------------------------------------------------------------------
16             sub new {
17 0     0     my $proto = shift;
18 0           my %argv = @_;
19 0   0       my $class = ref( $proto ) || $proto;
20 0   0       my $self = {
      0        
      0        
21             SIZE => $argv{'size'} || undef,
22             BLUR => $argv{'blur'} || 1,
23             QUALITY => $argv{'quality'} || undef,
24             WIDTH => undef,
25             HEIGHT => undef,
26             };
27 0           bless( $self, $class );
28 0           return $self;
29             }
30             #-------------------------------------------------------------------------------
31             # error
32             #-------------------------------------------------------------------------------
33             sub error {
34 0     0     my $self = shift;
35 0           return $error;
36             }
37             #-------------------------------------------------------------------------------
38             # size
39             #-------------------------------------------------------------------------------
40             sub size {
41 0     0     my $self = shift;
42 0 0         if( @_ ){ $self -> {SIZE} = shift }
  0            
43 0           return $self -> {SIZE};
44             }
45             #-------------------------------------------------------------------------------
46             # blur
47             #-------------------------------------------------------------------------------
48             sub blur {
49 0     0     my $self = shift;
50 0 0         if( @_ ){ $self -> {BLUR} = shift }
  0            
51 0           return $self -> {BLUR};
52             }
53             #-------------------------------------------------------------------------------
54             # quality
55             #-------------------------------------------------------------------------------
56             sub quality {
57 0     0     my $self = shift;
58 0 0         if( @_ ){ $self -> {QUALITY} = shift }
  0            
59 0           return $self -> {QUALITY};
60             }
61             #-------------------------------------------------------------------------------
62             # width
63             #-------------------------------------------------------------------------------
64             sub width {
65 0     0     my $self = shift;
66 0           return $self -> {WIDTH};
67             }
68             #-------------------------------------------------------------------------------
69             # height
70             #-------------------------------------------------------------------------------
71             sub height {
72 0     0     my $self = shift;
73 0           return $self -> {HEIGHT};
74             }
75             #-------------------------------------------------------------------------------
76             # thumbnail
77             #-------------------------------------------------------------------------------
78             sub thumbnail {
79 0     0     my $self = shift;
80 0           my %args = @_;
81            
82 0           my $input = $args{'input'};
83 0           my $output = $args{'output'};
84 0   0       my $size = $args{'size'} || $self -> {SIZE};
85 0   0       my $blur = $args{'blur'} || $self -> {BLUR};
86 0   0       my $quality = $args{'quality'} || $self -> {QUALITY};
87            
88             #input
89 0 0         if( !$input ){
90 0           $error = 'No input specified';
91 0           return;
92             }
93            
94             # output
95 0 0         if( !$output ){
96 0           $error = 'No output specified';
97 0           return;
98             }
99            
100             # size
101 0 0         if( !$size ){
    0          
102 0           $error = 'No size or scale specified';
103 0           return;
104             }
105             elsif( $size <= 0 ){
106 0           $error = 'Invalid width';
107 0           return;
108             }
109            
110 0           my $image = new Image::Magick;
111            
112 0           $image -> Read( $input );
113 0           my( $width, $height ) = $image -> Ping( $input );
114            
115             # horizonal
116 0 0         if( $width > $height ){
117 0           $self -> {HEIGHT} = int( $height * ( $size / $width ) );
118 0           $self -> {WIDTH} = $size;
119             }
120            
121             # vertical
122             else {
123 0           $self -> {WIDTH} = int( $width * ( $size / $height ) );
124 0           $self -> {HEIGHT} = $size;
125             }
126            
127 0 0         $image -> Set( quality => $quality ) if $quality;
128 0           $image -> Resize(
129             width => $self -> {WIDTH},
130             height => $self -> {HEIGHT},
131             blur => $blur,
132             );
133 0           $image -> Write( $output );
134 0           return 1;
135             }
136            
137             # Preloaded methods go here.
138            
139             1;
140             __END__