hallo leute
1)ausganssituation: der browser zeigt mir am anfang ein normales bild an.
2)drücke ich im browser auf die taste "zeige bild", so öffne ich ein .png-bild auf dem server mit folgender perl routine:
(dieses bild wird dann an den platz des ursprungsbild geöffnet usw..)$PIC_PNG_NAME = 'bild.png';
$CHUNK_SIZE = 3000;
open( PIC_PNG, "<$PIC_PNG_NAME" )
or die( "Can't open $PIC_PNG_NAME: $!\n" );
print "Content-type: image/png\r\n";
print "\r\n";
binmode( PIC_PNG );
binmode( STDOUT );
while ( read( PIC_PNG, $data, $CHUNK_SIZE ) ) {
print $data;
}
close( PIC_PNG );komisch ist nun, dass dies nur zu etwa 75% vom browser korrekt angezeigt wird.
in den fehlerhaften fällen passiert manchmal etwas merkwürdiges:
IE: manchmal öffnet er das bild, bevor der ladeprozess abgeschlossen ist, und zeigt dann dieses "fehlerbild",
auch wenn der ladevorgang abgeschlossen ist.
Netscape:manchmal wird das aktuelle bild nicht angezeigt, durch einen erneuten aufruf der perl funktion wird
das bild aber sofort angezeigt, ohne überhaupt noch etwas runterzuladen (d.h. muss schon irgendwo vorhanden sein).hat jemand eine idee was mein problem ist? ich habe versucht, durch veränderung der variable $CHUNK-SIZE
einfluss darauf zu nehmen, scheint aber immer noch nicht zu 100% zu funktionieren.
oder weiss jemand einen zuverlässigeren weg?vielen dank, marcel
ich denk du hast da zwei potentielle probleme: 1. \r\n ist dos-like, sollst durch \n\n ersetzen und die zweite zeile sparen
und 2. solltest du versuchen die content-length mitzuschicken, also das bild in einen string einlesen, und dann den header wie folgt erzeugen:
print "Content-type: image/png\n";
print "Content-length: ".length($imagestring)."\n\n";
print $imagestring;
vor allem der ie ist in manchen fällen scharf auf dieses content-length, sonst erfindet er manchmal irgendwelche komischen zeichen noch dazu.
ok, viel spass denn, gerhard