PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP Grundlagen (http://www.selfphp.de/forum/forumdisplay.php?f=12)
-   -   Bildausgabe nach imagecreate verzögern (http://www.selfphp.de/forum/showthread.php?t=14800)

heinerle 10.10.2006 11:46:14

Bildausgabe nach imagecreate verzögern
 
Hi,
ich weiss nicht, ob ich mit meiner Frage in diesem Teil des Forums richtig bin, oder ob sowas vielleicht schon etwas zu knifflig ist für den Anfängerteil. Folgendes Problem:
Der Benutzer kann Bilder hochladen, anschliessend bekommt er eine Liste seiner Bilder angezeigt (inklusive einiger Zusatzfunktionen und Effekte). Nun möchte ich dem Benutzer die Möglichkeit anbieten, das geladene Bild in der Grösse zu ändern, bzw. es zu drehen.
Die Funktionen als solches sind ja nicht schwer zu erstellen, Probleme entstehen erst nach der Ausführung der Funktionen.
Beim Drehen der Bilder benutze ich z.b. imagecreatefromjpeg, imagejpg und imageRotate für das Drehen eines "jpg". Es funktioniert auch alles und das geänderte Bild wird korrekt abgespeichert. Im Anschluss an meine Funktion rotatePicture() soll das geänderte Bild angezeigt werden, und da lauert der Fehlerteufel: Es wird nicht das neue Bild geladen, sondern das Bild aus dem Orginal wird gezeigt.
Scheinbar wird dieses Bild schon vorgeladen, bevor rotatePicture() mit dem abspeichern der Änderung fertig ist.
Wie kann ich erzwingen, dass das Ergebnis der Funktion geladen wird, bzw. wie kann ich dieses "Vorladen" verhindern? Soweit ich das bisher mitbekommen habe, arbeit doch PHP sequentiell und dürfte das Bild erst in den Quelltext laden, wenn es angefordert wird, oder?

Hat vielleicht jemand eine Idee, wo mein Denkfehler liegt oder wie ich dieses Problem beheben kann?

thx
heinerle

rarios 10.10.2006 13:54:26

AW: Bildausgabe nach imagecreate verzögern
 
sleep([sekundenanzahl]);
beispiel: sleep(60); wartet ne minute

heinerle 10.10.2006 14:02:56

AW: Bildausgabe nach imagecreate verzögern
 
nein, die Idee mit sleep() hatte ich auch, aber es ist ein Cache-Problem gewesen.
Ich habe es soeben gelöst.
also:
das Orginalbild und das geänderte Bild tragen beide den gleichen Namen, da das gedrehte Bild das Orginal überschreibt.
die Frage war also: Wie überliste ich dem Browser, dass der denkt, es seien 2 unterschiedliche Dateien?
die Lösung war simpel:
Code:

<img src='<?=$f.'?bla=time()'?>' name='rotateImg' style='width: <?=$s[0]?>px; height: <?=$s[1]?>px;'>
durch das Anhängen von ?bla=time() gaukle ich dem Browser vor, dass ich an der Bezeichnung des Bildes was geändert hat. und die time() vom Orginal ist ja eine andere als time() nach dem Durchlaufen der Funktion. Somit wird der Browser gezwungen das Bild neu zu laden und es nicht aus seinem Browser-Cache darzustellen.

Ergo:
Problem GELÖST und ich hoffe, der Kniff hilft noch anderen


Alle Zeitangaben in WEZ +2. Es ist jetzt 23:22:18 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.