Hallo Freunde!
Ich habe einen Bildupload für Bildergalerien. Die Bilder werden kleingerechent und ein Thumb wird angelegt. Dazu wird einen Übersicht mit den Thumbs angelegt. Alles kein Problem.
In allen mir zugänglichen OS und Browsern
Mac OS X Safari, IE, NS
Win XP h./p. FireFox, IE, NS
Alles gut! Nur auf Win2000 und IE 6.0 und nach meinen Tests auch IE 5.0 habe ich den Effekt, das sich der Browser mit einigen Thums aufhängt. Alles anderen Browser tun dies nicht.
Lade ich die großen Bilder runter, speichere sie in PhotoShop und lade sie wieder hoch, lasse mein Tool für die Thumb erstellung drüber laufen, bumm alles gut!
Die Bilder werden in den sich aufhängenden Browsern auch nicht dargestellt.
Hat jemand soetwas schon mal gehabt? Da es an dem Ausgangsmateriel liegt, gehe ich nicht davon aus, dass es an meiner Image:: Magick Berechnung liegt. Ich glaube viel mehr, dass es an dem ursprungsbild liegt und das Image::Magick diese einstellungen übernimmt beim speichern.
Gibt es defaults für JPGS, mit denen es immer klappen sollte? Dann setze ich die in Image::Magick einfach, so dass die der originaldatei überschrieben werden.
Ein weiteres Problem ist, dass einige Thums von Firewalls geschluckt werden, einfach gar nicht angezeigt werden. Das hatte ich auch unabhängig von Image::Magick oft in Projekten. Gibt es dafür eine Spezifikation wie Grafiken auszusehen haben?
Hier eine heile Galerie:
http://web22.knoefler.com/cgi-bin....oint=16
Hier eine die sich aufhängt:
http://web22.knoefler.com/cgi-bin....oint=22
Der Code ist dynamisch erzeugt und unterscheidet sich nur durch die Bilder.
Hier die Image::Magick geschichte:
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
40
41
42
43
44
45
46
47
48
sub bildberechnen
{
use Image::Magick;
my ($ursprungsdatei,$neuerDateiName,$max_x,$max_y)=@_;
unless (-e $ursprungsdatei){
return "Datei $ursprungsdatei existiert nicht!";
}
unless($max_x > 10){
return "Maximalbreite '$max_x' zu gering!";
}
unless($max_y > 10){
return "Maximalhöhe '$max_y' zu gering!";
}
my $image = Image::Magick->new();
print "öffne Datei: $ursprungsdatei ".." Line: ".."<br>\n" if($config{'umgebung'} eq "test");
$image->Read($ursprungsdatei);
my ($x,$y) = $image->Get("width","height");
print "davor: x : $x, y : $y ".." Line: ".."<br>\n" if($config{'umgebung'} eq "test");
my $z = 0;
if ($x > $max_x)
{
$z = $max_x/$x*100;
$z = $z."%";
$image->Scale($z);
$z = int($z);
($x,$y) = $image->Get("width","height");
printf "zu breit, auf %s\% reduziert ($x,$y) ",$z if($config{'umgebung'} eq "test");;
print ." Line: ".."<br>\n" if($config{'umgebung'} eq "test");
}
if ($y > $max_y)
{
$z = $max_y/$y*100;
$z = int($z);
$z = $z."%";
$image->Scale($z);
($x,$y) = $image->Get("width","height");
#printf "zu hoch, auf %s\% reduziert ($x,$y)",$z;
#print "<br>\n";
}
#print "danach: x : $x, y : $y<br>\n";
my $zielbilddatei="$neuerDateiName";
$image->Write(filename => $zielbilddatei);
return($x,$y);
}