Temporäre Bildausgabe...
Ralf
- php
Also obwohl ich schon ganz gut mit html und php zurechtkomme scheint es mir bei folgenden Problem am Grundsatzwissen zu fehlen-zumindest kann ich es mir nur so erklären:
Ich erzeuge ein Bild mit Wasserzeichen und gebe das über einen bestimmten Pfad und Namen mit imagejpeg aus.
Der Aufruf, das Wasserzeichen-alles klappt.
Jedoch möchte ich,dass das Bild nach der Ausgabe gelöscht wird.Das mache ich mit "unlink...". Klappt auch,aber das Problem ist,dass das Bild dann gar nicht mehr angezeigt wird und das verstehe ich einfach nicht.
Das Ganze wird doch zeilenweise abgearbeitet und die Bildausgabe müßte stattfinden-tut sie aber nur wenn ich den unlink-Befehl ganz am Ende,also nach der Bildausgabe weglasse.
Da viele Bilder über diese Weise angezeigt werden,habe ich meinen temp-Ordner bald voll und dies war eigentlich nicht mein Plan.
Wer von euch weiß Rat?
Warum speicherst du das Bild überhaupt ab? Bau dir doch eine PHP-Datei, die die Bilddaten direkt ausgeben. Der Bildtag sieht dann folgendermaßen aus:
<img src="xy.php">
Fand ich schon immer geschickter weil man dann nicht so viel aufzuräumen hat :)
Gruß
Moe
Hallo Moe, so sieht mein code bislang aus:
----
$file = $derbg;
$size = getimagesize($file);
$width = $size[0]; $height = $size[1];
$old_picture = imagecreatefromjpeg($file);
$new_picture = imagecreatetruecolor($width, $height);
imagecopyresampled($new_picture, $old_picture, 0, 0, 0, 0, $width, $height, $width, $height);
$transition = 40; $watermarkfile = imagecreatefrompng('images/wasserzeichen.png');
$waternarkpic_width = imagesx($watermarkfile);
$waternarkpic_height = imagesy($watermarkfile);
// $watermarkdest_x = $width / 2 - ($waternarkpic_width / 2); $watermarkdest_y = $height / 2 - ($waternarkpic_height / 2);
if ($reihe_anfrage['medium'] == 2)
{
$watermarkdest_x = $width / 2 - ($waternarkpic_width / 2); $watermarkdest_y = 260;
}
else
{
$watermarkdest_x = $width / 2 - ($waternarkpic_width / 2); $watermarkdest_y = 370;
}
imagecopymerge($new_picture, $watermarkfile, $watermarkdest_x, $watermarkdest_y, 0, 0, $waternarkpic_width, $waternarkpic_height, $transition);
$bildname="images/".$reihe_anfrage['nr'].".jpg";
imagejpeg($new_picture,$bildname);
?>
<td bordercolor="#666666" height="<?php echo $size2;?>" width="<?php echo $size1;?>" background="<?php echo $bildname; ;?>">
---
Wie kann ich es denn sonst machen?
Hallo,
Wie kann ich es denn sonst machen?
du brauchst das Bild überhaupt nicht erstellen und speichern, sondern nur ausgeben. Der header() ist dir dabei behilflich.
Was ist der Inhalt von $derbg bzw. $file?
Erstelle z.B. eine solche PHP-Datei (hast du ja bereits)
$file = $_GET['DEINE_DATEI']
$size = getimagesize($file);
$newwidth1 = $size[0] / 100;
$newwidth = $size[0] / $newwidth1;
$newheight = $size[1] / $newwidth1;
$preimg = imagecreatefromjpeg($file);
$createpreimg = imagecreatetruecolor($newwidth, $newheight);
imagecopyresized($createpreimg, $preimg, 0, 0, 0, 0, $newwidth, $newheight, $size[0], $size[1]);
header("Content-type: image/jpeg");
imagejpeg($createpreimg);
Das Script erstellt eine Kopie von DEIN_BILD (example.jpg), skaliert es auf 100px Breite und gibt es aus. Zur Ausgabe einfach <img src="script.php?DEINE_DATEI=example.jpg">
Grüße, Matze
Also für meine Routine (mit dem Wasserzeichen) klappt dies leider überhaupt nicht. Es wird nicht mehr das Bild sondern nur noch Kauderwelsh ausgegeben.
Hallo,
Also für meine Routine (mit dem Wasserzeichen) klappt dies leider überhaupt nicht. Es wird nicht mehr das Bild sondern nur noch Kauderwelsh ausgegeben.
dann machst du irgendwas falsch. Was falsch ist kann ich nicht sagen, meine Glaskugel ist in der Werkstatt.
Grüße, Matze
Hi,
Also für meine Routine (mit dem Wasserzeichen) klappt dies leider überhaupt nicht. Es wird nicht mehr das Bild sondern nur noch Kauderwelsh ausgegeben.
Dann hast du wohl den Hinweis auf header() ignoriert.
Nutze diese Funktion, um dem Browser mitzuteilen, dass die Daten, die er vom Script erhaelt, als Bilddaten interpretiert werden sollen - sprich, gebe einen passenden Content-Type Header aus.
Wenn das Bild nicht nur temporaer verwendet werden soll, sondern dauerhaft - dann bietet sich ein Abspeichern auf Platte aber natuerlich in aller Regel eher an, als dynamische Erzeugung bei jedem Scriptaufruf.
MfG ChrisB