Bilderzeugung
David Hörpel
- php
0 Kerstin
Hi!
ich habe folgendes Script:
<?php
header ("Content-type:image/png");
$im = ImageCreatefromPng ("karte.png")
or die ("Kann keinen neuen GD-Bild-Stream erzeugen");
$height = $HTTP_GET_VARS["height"];
$width = $HTTP_GET_VARS["width"];
$background_color = ImageColorAllocate ($im, 255, 255, 255);
$text_color = ImageColorAllocate ($im, 233, 14, 91);
ImageString ($im, 1, 0, 0, "", $text_color, $height, $width);
imagepng($im);
?>
Hier wird ein Bild eingelesen und es soll ein neues Bild mit einer neuen Größe erzeugt werden (die Bildschirmgröße und -breite, die ich per Get an die URL drangehängt habe). Jetzt habe ich aber irgendetwas in der vorletzten Zeile
#ImageString ($im, 1, 0, 0, "", $text_color, $height, $width);
falsch gemacht, nur ich weiss nicht was. Kann mir da einer helfen, bzw. die Zeile berichtigen? Das wäre sehr nett.
Hi!
ich habe folgendes Script:
<?php
header ("Content-type:image/png");
$im = ImageCreatefromPng ("karte.png")
or die ("Kann keinen neuen GD-Bild-Stream erzeugen");
$height = $HTTP_GET_VARS["height"];
$width = $HTTP_GET_VARS["width"];
$background_color = ImageColorAllocate ($im, 255, 255, 255);
$text_color = ImageColorAllocate ($im, 233, 14, 91);
ImageString ($im, 1, 0, 0, "", $text_color, $height, $width);
imagepng($im);
?>
Hier wird ein Bild eingelesen und es soll ein neues Bild mit einer neuen Größe erzeugt werden (die Bildschirmgröße und -breite, die ich per Get an die URL drangehängt habe). Jetzt habe ich aber irgendetwas in der vorletzten Zeile
#ImageString ($im, 1, 0, 0, "", $text_color, $height, $width);
falsch gemacht, nur ich weiss nicht was. Kann mir da einer helfen, bzw. die Zeile berichtigen? Das wäre sehr nett.
Hallo David,
lass bei ImageString mal $height und $width weg
-> int imagestring (int im, int font, int x, int y, string s, int col)
und noch was: so viel ich weiss, dürfen in der Graphikdatei nur Bildinformationen stehen (bitte berichtigen wenn ich mich irre), also darf da bei $im ... kein or die("...") vorkommen.
viele Grüsse
Kerstin
<?php
header ("Content-type:image/png");
$im = ImageCreatefromPng ("karte.png")
or die ("Kann keinen neuen GD-Bild-Stream erzeugen");
$height = $HTTP_GET_VARS["height"];
$width = $HTTP_GET_VARS["width"];
$background_color = ImageColorAllocate ($im, 255, 255, 255);
$text_color = ImageColorAllocate ($im, 233, 14, 91);
ImageString ($im, 1, 0, 0, "", $text_color, $height, $width);
imagepng($im);
?>
Hier wird ein Bild eingelesen und es soll ein neues Bild mit einer neuen Größe erzeugt werden (die Bildschirmgröße und -breite, die ich per Get an die URL drangehängt habe).
Du scheinst etwas auf dem falschen Dampfer zu sein. Du liest hier lediglich ein Bild ein und versuchst dann, einen leeren Text reinzuschreiben.
Ein neues Bild mit einer neuen Größe wird hier nirgends erzeugt. Insbesondere Bildhöhe- und breite sind beim Textschreiben mit imagestring() vollkommen fehl am Platz, wie Kerstin auch schon geschrieben hat.
Willst Du die Bildgröße ändern, mußt Du auf imagecopyresize() oder -resample() zurückgreifen. Mehr dazu steht in der PHP-Anleitung.
Jetzt habe ich aber irgendetwas in der vorletzten Zeile
#ImageString ($im, 1, 0, 0, "", $text_color, $height, $width);
falsch gemacht, nur ich weiss nicht was. Kann mir da einer helfen, bzw. die Zeile berichtigen? Das wäre sehr nett.
Ein Blick in die Anleitung wäre sehr nett und Du hättest Dir die Frage ersparen können.
und noch was: so viel ich weiss, dürfen in der Graphikdatei nur Bildinformationen stehen (bitte berichtigen wenn ich mich irre), also darf da bei $im ... kein or die("...") vorkommen.
Das ist in dem Fall Wurst. Bilddaten kann er eh keine erzeugen und ob er nun ein ungültiges PNG-Format liefert (wegen des die()-Textes) oder einen 500er Fehler.. Dazu kommt noch, daß imagecreatefrompng() unter Umständen schon selbst einen Warntext ausgibt.
Was aber fehlt, ist das exit() am Ende, direkt nach imagepng(). Es könnte sonst sein, daß nach den PNG-Daten noch ein oder mehrere Zeilenumbrüche gesendet werden. Ohne exit() liefert der PHP-Interpreter schließlich auch noch alles aus dieser Datei mit, was nach dem eigentlichen Skriptende (also dem '?>') kommt.
Gruß,
soenk.e