Schrift
[thread]5848[/thread]

kurios: Bild verkleinern: Merkwürdige Fehlermeldung



<< |< 1 2 >| >> 12 Einträge, 2 Seiten
Froschpopo
 2003-10-23 19:20
#66870 #66870
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
Ich verkleinere ein Bild mit folgendem Code:

Code: (dl )
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:
Code: (dl )
1
2
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-->
Crian
 2003-10-23 19:35
#66871 #66871
User since
2003-08-04
5872 Artikel
ModeratorIn
[Homepage]
user image
welche Zeile ist 747?
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
Froschpopo
 2003-10-23 19:38
#66872 #66872
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
$thumbnailheight = sprintf ("%.0f",$height / $relation);
Crian
 2003-10-23 19:45
#66873 #66873
User since
2003-08-04
5872 Artikel
ModeratorIn
[Homepage]
user image
Na, dann kann doch nur $relation Null geworden sein...
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
Froschpopo
 2003-10-23 20:04
#66874 #66874
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
und wieso!???
das Bild ist 584x776 groß!!\n\n

<!--EDIT|Froschpopo|1066925132-->
Ishka
 2003-10-23 20:46
#66875 #66875
User since
2003-08-04
771 Artikel
HausmeisterIn
[Homepage] [default_avatar]
gib mal die Paar Zeilen vorher jede Zeile die wichtigsten Variablen aus - dann siehst du, woran es liegt.
sub z{if(@_){1while$x[$k=rand 10];t($t=$x[$k]=1)}print map"$z[$x[$_]]$_".($_%3?
"":"\n"),1..9}sub t{$j=0;$x[$_+1]==$t&&($j+=2**$_)for 0..8;z,die"Gewinner $z[$t]
"if grep$_==($j&$_),7,56,73,84,146,273,292,448;z,die"Gleichstand\n"if@x>9&&!grep
!$_,@x}@x=4;@z=qw{. [ (};z$^T&1;while(<>){next if$_>9||$x[$_];t$t=$x[$_]=2;z 1}
Froschpopo
 2003-10-23 20:47
#66876 #66876
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
ich habe mal ein anderes bil dmit exakt derselben größe hochgeladen, es hat funktioniert! Aber mit diesem Bild scheint es nicht zu funktionieren... Weiß der Geier warum!!!? Der Upload klappt, es wird aber nicht verkleinert. stattdessen erscheint die o.g. Fehlermeldung.
Ishka
 2003-10-23 20:54
#66877 #66877
User since
2003-08-04
771 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Aber das Bild wird im Browser - wenn du es ihm im Orginal anbietest - korrekt angezeigt?

Wenn du es mit nem Editor öffnest und erneut speicherst - tritt der Bug dann immer noch auf?
sub z{if(@_){1while$x[$k=rand 10];t($t=$x[$k]=1)}print map"$z[$x[$_]]$_".($_%3?
"":"\n"),1..9}sub t{$j=0;$x[$_+1]==$t&&($j+=2**$_)for 0..8;z,die"Gewinner $z[$t]
"if grep$_==($j&$_),7,56,73,84,146,273,292,448;z,die"Gleichstand\n"if@x>9&&!grep
!$_,@x}@x=4;@z=qw{. [ (};z$^T&1;while(<>){next if$_>9||$x[$_];t$t=$x[$_]=2;z 1}
Froschpopo
 2003-10-23 21:08
#66878 #66878
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
ich habe mit einem editor in das bild einen strich hinzugefügt und jetzt funzt es.
Aber die frage war ja, warum das problem aftauchte und wie ich die fehlermeldung vermeien kann! denn wenn die ein user liest der damit nichts anfangen kann dann gibts verwirrung und es macht einen schlechten eindruck! ausserdem verstehe ich nicht, warum in der fehlermeldung ein anderer dateiname des bildes erscheint (siehe Post 1)
Ishka
 2003-10-23 21:13
#66879 #66879
User since
2003-08-04
771 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Das ist eine fehlerhafte jpg gewesen. Und Perl ermittelt entweder als Höhe oder als Breite den Wert 0. Frag ab, ob Höhe und Breite > 0 sind und wenn nicht, gib ne entsprechende Warnung aus.
sub z{if(@_){1while$x[$k=rand 10];t($t=$x[$k]=1)}print map"$z[$x[$_]]$_".($_%3?
"":"\n"),1..9}sub t{$j=0;$x[$_+1]==$t&&($j+=2**$_)for 0..8;z,die"Gewinner $z[$t]
"if grep$_==($j&$_),7,56,73,84,146,273,292,448;z,die"Gleichstand\n"if@x>9&&!grep
!$_,@x}@x=4;@z=qw{. [ (};z$^T&1;while(<>){next if$_>9||$x[$_];t$t=$x[$_]=2;z 1}
<< |< 1 2 >| >> 12 Einträge, 2 Seiten



View all threads created 2003-10-23 19:20.