Ich verkleinere ein Bild mit folgendem Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
my $pic = param('pic');
my $filehandle = upload('pic');
my $bild = $pic;
$switch = 1 if $pic;
my ($file, $baba, $tld);
$tld = (split(/\./, $pic))[-1];
$file = $username if $switch == 1;
$tld = lc($tld);
$baba = "$file.$tld";
if($switch == 1)
{
open (IMAGE,">/usr/local/httpd/htdocs/userpics/$baba");
flock IMAGE, 1;
for(<$filehandle>)
{
print IMAGE $_;
}
flock IMAGE, 8;
close(IMAGE);
}
my ($width,$height) = imgsize($pic);
my ($thumbnailwidth, $thumbnailheight) = ($width, $height);
if($switch == 1)
{
my $max_height = 200;
my $max_width = 300;
my $relation;
$relation = ($height / $max_height) > ($width / $max_width)
? $height / $max_height : $width / $max_width;
$thumbnailheight = sprintf ("%.0f",$height / $relation);
$thumbnailwidth = sprintf ("%.0f",$width / $relation);
my $big = GD::Image->newFromJpeg("/usr/local/httpd/htdocs/userpics/$baba");
my $lit = new GD::Image($thumbnailwidth,$thumbnailheight);
$lit->copyResized($big, 0, 0, 0, 0, $thumbnailwidth, $thumbnailheight, $width, $height);
my $jpeg_data = $lit->jpeg;
open (OUTFILE,">/usr/local/httpd/htdocs/userpics/$baba");
print OUTFILE $jpeg_data;
close OUTFILE;
}
Das funktioniert bei fast allen Bildern fehlerfrei!! Nur bei einem einzigen erhalte ich folgende Meldung:
Sytax Error
Illegal division by zero at /usr/local/httpd/cgi-bin/index.pl line 747, <fh00001ttt.jpg> line 369.
nun meine Fragen:
1. welche Zahl wird durch 0 geteilt
2. Das Foto heißt ttt.jpg, warum steht dort fh00001ttt.jpg?
3. wieso erscheint das error nur bei diesem einen bild?\n\n
<!--EDIT|Froschpopo|1066922664-->