| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |
|

11-06-2008, 10:55
|
|
Onyxagargaryll
Registrierter Benutzer
|
|
Registriert seit: Nov 2007
Ort: Schweiz
Beiträge: 239
|
|
Header eines Bildes
Hallo zusammen
Wie kann ich die Header (cache und expires) eines generierten Bildes setzen?
Das echo am schluss brauche ich, darum ist der type nicht img\png.
Code:
PHP-Code:
<?php
header("Cache-Control: no-cache, must-revalidate");
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
if (isset($_GET['p1']) && isset($_GET['p2']) && isset($_GET['title']) && isset($_SESSION['guild'])) {
session_start();
// Bilder laden
$imgsrc = imagecreatefrompng("g_gfx_lib/form/".$_GET['p1'].".png"); // Bild 1
$image2 = imagecreatefrompng("g_gfx_lib/figures/".$_GET['p2'].".png"); // Bild 2
// Bild Infos
$width = imagesx($imgsrc); // Höhe Hauptbild
$height = imagesy($imgsrc); // Breite Hauptbild
$x = imagesx($image2); // Höhe Bild 2
$y = imagesy($image2); // Breite Bild 2
// Bilder erzeugen
$img = imagecreatetruecolor($width, $height);
imagesavealpha($img, true);
// Transparente Farbe
$trans_colour = imagecolorallocatealpha($img, 0, 0, 0, 127);
imagefill($img, 0, 0, $trans_colour);
// Bild einfügen
imagecopy($img, $imgsrc, 0, 0, 0, 0, $width, $height);
imagecopy($img, $image2, 0, 0, 0, 0, $x, $y);
// Blablabla...
// Hier fügt er noch Text ein und so...
// Bild anzeigen
imagepng($img,'guildimgs/guild_'.$_SESSION['guild'].'.png');
// Speicher freigeben
imagedestroy($img);
echo('<img src="guildimgs/guild_'.$_SESSION['guild'].'.png" />');
}
?>
Wäre froh um ein wenig Hilfe
Danke und MfG
Onyx
PS: So wies oben steht funktionierts nicht..
|

11-06-2008, 11:06
|
|
asp2php
Banned
|
|
Registriert seit: Feb 2004
Beiträge: 11.746
|
|
Falsche Vorgehensweise! Du musst eine Scriptdatei für Bild erzeugung haben, etwa bild.php, darin setzt du stink normale Header-Info für Bilddatei ab, erzeugt das Bild und sende die Bilddaten.
In deinem Hauptscript machst du einfach:
<img src="bild.php?para1=...¶2=..." alt="..." />
|

11-06-2008, 11:08
|
|
Onyxagargaryll
Registrierter Benutzer
|
|
Registriert seit: Nov 2007
Ort: Schweiz
Beiträge: 239
|
|
Hmm verstehe.. aber dann ist der Pfad in den Eigenschaften der Imagedatei falsch...
gibts da eine Möglichkeit dafür?
Kann man denn nicht im Nachhinein die headers für das kreierte Bild setzen?
|

11-06-2008, 11:11
|
|
pekka
PHP Master
|
|
Registriert seit: Jun 2001
Ort: Köln
Beiträge: 6.608
|
|
Zitat:
|
aber dann ist der Pfad in den Eigenschaften der Imagedatei falsch...
|
 Hä?
|

11-06-2008, 11:11
|
|
asp2php
Banned
|
|
Registriert seit: Feb 2004
Beiträge: 11.746
|
|
Du willst doch das Bild on the fly erzeugen? Dann ist mein Vorschlag genau richtig. Es gibt keinen Pfad zu einem Bild in diesem Fall, sondern nur zu der bild.php, das Bild existiert physikalisch auf dem Server nicht.
Oder was willst du eigentlich?
|

11-06-2008, 11:15
|
|
Onyxagargaryll
Registrierter Benutzer
|
|
Registriert seit: Nov 2007
Ort: Schweiz
Beiträge: 239
|
|
Ich verstehe schon, dass deine Lösung richtig ist  Klar ist es so machbar, aber siehe z.B. im Script:
Zitat:
|
imagepng($img,'guildimgs/guild_'.$_SESSION['guild'].'.png');
|
heisst ich speichere das Bild z.B. so: "guildimgs/guild_1" ab.
Dass es auf deine Art geht ist mir klar, möchte aber trotzdem noch abklären, ob meine Alternative möglich ist
MfG
Onyx
EDIT: Ich meine damit: Kann ich nach der oben gennanten Quote im Script die Header der Imagedatei abwandeln?
Geändert von Onyxagargaryll (11-06-2008 um 11:18 Uhr)
|

11-06-2008, 11:21
|
|
asp2php
Banned
|
|
Registriert seit: Feb 2004
Beiträge: 11.746
|
|
Ähm ... du legst die Datei in Filesystem ab, also kannst du auch so machen wie du's vorhast, aber denke mal an die Leichen nachher in deinem Filesystem. Außerdem was willst du denn mit header? Ich kann dir nicht ganz folgen.
|

11-06-2008, 11:27
|
|
pekka
PHP Master
|
|
Registriert seit: Jun 2001
Ort: Köln
Beiträge: 6.608
|
|
@Threadstarter: Um Header innerhalb des PNGs abzusetzen, mußt du dieses via PHP-Skript ausgeben (also nicht nur erzeugen).
Viel einfacher geht es wahrscheinlich via .htaccess/Apache-Konfiguration. Ich denke, das muß dort irgendwie gehen, daß du für deine Bildverzeichnisse globale Caching-Optionen einstellenm kannst.
|

11-06-2008, 11:27
|
|
Onyxagargaryll
Registrierter Benutzer
|
|
Registriert seit: Nov 2007
Ort: Schweiz
Beiträge: 239
|
|
Also ich mach mal ein paar ausschweifende Erklärungen ^^
AJAX-Request auf diese Datei. Jemand will ein Bild kreieren, welches sich aus mehreren bereits vorhandenen PNGs zusammensetzt ( siehe Abschmitt "Bilder laden").
Das kreierte Bild wird als Gildenwappen gespeichert (guild_xy -> xy=ID der Gilde).
Dieses Bild bleibt bestehen als ein Bild so auf dem Server.
Wenn jetzt z.B. der Administrator das Bild ändert, wird bei ihm als Resultat immernoch das alte (gecachte) angezeigt.
--> Darum muss ich den Expries und Cache-Control header setzen.
(Das ändern des Bildes kann sich übrigens im auch im Sekundentakt ändern - d.h. ich brauch den header ^^)
Ich hoffe damit ist einiges klarer
MfG
Onyxagargaryll
|

11-06-2008, 11:29
|
|
Onyxagargaryll
Registrierter Benutzer
|
|
Registriert seit: Nov 2007
Ort: Schweiz
Beiträge: 239
|
|
@pekka:
Zitat:
|
Viel einfacher geht es wahrscheinlich via .htaccess/Apache-Konfiguration.
|
Puh oO Naja da habe ich kA, das müsst ich nachschauen...
kann sein dass ich ne Weile nicht antworte ^^
Aber wahrsch. ist dann die Lösung von asp2php einiges einfacher :P
MfG
|

11-06-2008, 11:30
|
|
pekka
PHP Master
|
|
Registriert seit: Jun 2001
Ort: Köln
Beiträge: 6.608
|
|
Zitat:
|
Wenn jetzt z.B. der Administrator das Bild ändert, wird bei ihm als Resultat immernoch das alte (gecachte) angezeigt.
|
Dann dürfte das Anhängen eines zufälligen GET-Parameters an die Bild-URL das einfachste Mittel sein.
meinbild.php?zufall=12030489506984
|

11-06-2008, 11:33
|
|
Onyxagargaryll
Registrierter Benutzer
|
|
Registriert seit: Nov 2007
Ort: Schweiz
Beiträge: 239
|
|
@pekka
Diese kombination geht aber wieder nur in Verbindung mit der Lösung von asp2php ^^
ich kann ja nicht src="xy.png?zufal=298374" in den imagetag schreiben :P
|

11-06-2008, 11:34
|
|
pekka
PHP Master
|
|
Registriert seit: Jun 2001
Ort: Köln
Beiträge: 6.608
|
|
Zitat:
|
ich kann ja nicht src="xy.png?zufal=298374" in den imagetag schreiben :P
|
Warum nicht?
|

11-06-2008, 11:34
|
jahlives
Master  
|
|
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.283
|
|
Zitat:
|
Wenn jetzt z.B. der Administrator das Bild ändert, wird bei ihm als Resultat immernoch das alte (gecachte) angezeigt.
|
Und wenn der Admin, wenn er noch das alte Bild sieht, einfach Ctrl+F5 drückt? Dann sollte die Ressource unter Umgehung des Caches neu vom Server geladen werden
|

11-06-2008, 11:37
|
|
pekka
PHP Master
|
|
Registriert seit: Jun 2001
Ort: Köln
Beiträge: 6.608
|
|
Zitat:
Original geschrieben von jahlives
Und wenn der Admin, wenn er noch das alte Bild sieht, einfach Ctrl+F5 drückt? Dann sollte die Ressource unter Umgehung des Caches neu vom Server geladen werden
|
Das nenne ich Usability!
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|