Martin Agersted Jarl <martin@sletmigjarl.dk> writes:
> En bruger skal uploade en stort billede (f.eks. et tiff-billede).
> Bruger vælger billedfilen og klikker på "upload".
> Billedet uploades.
> Billedet konverteres af et-eller-anden-applikation
> og output = thumbnail.
> Kan convert indgå i et sådan scenario?
Jeg har ofte brugt en variation over følgende perlkode der gemmer
billede i tre størrelser samt original-billedet. Lige præcis dette
kode ser primært ud til at være skrevet til fotografier, da de små
billeder altid er jpg-filer.
Du skal selvfølgelig lige selv skrive noget omgivende kode.
# $img er billedet, $imgname er et passende billednavn.
use Image::Size;
my ($img_x,$img_y) = imgsize(\$img);
my $img_size = $img_x > $img_y ? $img_x : $img_y;
my %scale = ( large => int((600/$img_size)*100) . '%',
medium => int((200/$img_size)*100) . '%',
small => int((65/$img_size)*100) . '%',
);
my $imgpath = "$DOCROOT/uploads";
$imgname =~ m!([^/]+)(\.[^/.]+)$/;
$base = $1; $ext = $2;
for $size (keys %scale) {
open CONVERT, "| /usr/bin/convert -colorspace RGB -resize $scale{$size}x$scale{$size} $ext:- $imgpath/$base_$size.jpg" || (warn "Couldn't open convert $base_$size.jpg" && next);
print CONVERT $img;
close CONVERT;
}
if (open FH, ">", "$imgpath/$base.$ext") {
print FH $img;
close FH;
} else {
warn "Couldn't open $base.$ext";
}
--
Peter Makholm | I laugh in the face of danger. Then I hide until
peter@makholm.net | it goes away
http://hacking.dk | -- Xander