Labyrinth-Plugin-Album

 view release on metacpan or  search on metacpan

vhost/toolkit/thumbnails.pl  view on Meta::CPAN

#!/usr/bin/perl -w
use strict;

my $BASE;

# create images in pages
BEGIN {
    $BASE = '..';
}

#############################################################################
#Global Variables                                                           #
#############################################################################

my ($LMAX,$SMAX) = (800,150);

#############################################################################
#Modules/External Subroutines                                               #
#############################################################################

use Carp;
use Image::Magick;

use lib qw|../cgi-bin/lib ../cgi-bin/plugins|;
use Labyrinth::Globals;
use Labyrinth::Variables;

#############################################################################
#Subroutines
#############################################################################

Labyrinth::Globals::LoadSettings("$BASE/cgi-bin/config/settings.ini");
Labyrinth::Globals::DBConnect();

my @rs = $dbi->GetQuery('hash','GetAllPhotos');
for my $row (@rs) {
    my $image  = lc $row->{image};
    $image =~ s!(\d{8})t(\d{6})!$1T$2!;
    $image =~ s!^.*$BASE/html/photos/!!;

    my $source = "$BASE/html/photos/$row->{image}";
    my $target = "$BASE/html/photos/$image";

    if($image ne $row->{image}) {
        system("mv $source $target");
        $source = $target;
        $dbi->DoQuery('SetImage',$image,$row->{photoid});
    }

    $target =~ s/\./-thumb./;
    $target =~ s/\s+//g;

    unless(-f $source) {
        $image = $source;
        $image =~ s!\.jpg$!.JPG!;
        if(-f $image) {
            system("mv $image $source");
        } else {
            print STDERR "IMAGE MISSING: $source\n";
            next;
        }
    }

    next unless(-f $source);
    unlink $target  if(-f $target);

    # read in current image
    my $i = Image::Magick->new();
    croak "object image error: [$source]"   if !$i;
    my $c = $i->Read($source);
    croak "read image error: [$source] $c"  if $c;
    $c = $i->AutoOrient();
    croak "orient image error: [$source] $c"  if $c;

    # resize main image if necessary
    my ($width,$height) = $i->Get('columns', 'rows');
    if($width > $LMAX || $height > $LMAX) {
        $i->Scale(geometry => "${LMAX}x${LMAX}");
    }

    $c = $i->Write($source);
    if($c) {
        print STDERR "write image error: [$source] $c\n";
        next;
    }

    # generate thumbnail
    $i->Scale(geometry => "${SMAX}x${SMAX}");
    $c = $i->Write($target);
    if($c) {
        print STDERR "write image error: [$target] $c\n";
        next;
    }

    # update DB
    $target =~ s!^$BASE/html/photos/!!;
    $dbi->DoQuery('SetThumb',$target,$row->{photoid});
}

__END__




( run in 2.299 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )