sub resizeImg { my ( $self, $imageName, $newImageName, $mkThumb ) = @_; die("Cannot resize null image value") unless ($imageName); warn "before regex: imageName --> $imageName " if DEBUG; warn "before regex: newImageName --> $newImageName " if DEBUG; my ( $base, $dir, $suffix ) = fileparse( $imageName, qr{\..*} ); my ( $base2, $dir2, $suffix2 ) = fileparse( $newImageName, qr{\..*} ); $base2 =~ s/LG/TH/; my $tmpName = IMAGEDIR . '/' . $imageName; my $fileName = $newImageName; my $large = Image::Magick->new() or die "NO IMAGE READ!!!: $!"; my $filesRead = $large->Read($imageName); my $thumb = $large->Clone(); my ( $height, $width ) = $large->Get( 'height', 'width' ); my $reduceWlg = LG_MAX_WIDTH / $width; my $reducePercent = $reduceWlg; my $newH = $height * $reducePercent; my $newW = $width * $reducePercent; warn "new IMG: $fileName " if DEBUG; my $attempts; FILEWRITE: { $attempts++; eval { open( NEWIMG, ">$fileName" ) or die "Can't open new imagefile: ($fileName) $! \n"; binmode(NEWIMG); warn "after OPEN and BINMODE" if DEBUG; ###3 don't forget! Image::Magick functions don't have return values $large->Resize( height => $newH, width => $newW ) ; # or die "Resizing error: $! \n"; warn "RESIZE worked! " if DEBUG; $large->Write( file => \*NEWIMG ); # or die "Write error: $!\n"; warn "WRITE worked! " if DEBUG; close(NEWIMG); }; warn "trying to write the new file ( $fileName ) failed: $@ " if ($@); redo FILEWRITE if ( $@ and $attempts < 3 ); } #undef $large; warn "New LG image written" if DEBUG; if ($mkThumb) { my $thumbName = "${dir2}/${base2}${suffix2}"; warn "thumb : $thumbName " if DEBUG; my $reduceWth = TH_MAX_WIDTH / $width; $reducePercent = $reduceWth; $newH = $height * $reducePercent; $newW = $width * $reducePercent; $thumb->Resize( height => $newH, width => $newW ); open( NEWIMG, ">$thumbName" ) or die "Can't open new imagefile: ($thumbName) $! \n"; $thumb->Write( file => \*NEWIMG ); close(NEWIMG); warn "New TH image written" if DEBUG; } warn "exiting sub resizeImg()" if DEBUG; return 1; }