[PHP] Bild generieren lassen

P13RR3

Lt. Commander
Registriert
Juli 2003
Beiträge
1.148
Hi,

also, ich hab nen Text, der automatisch generiert wird. Diese Überschrift zur jeweiligen Seite gebe ich mit
Code:
echo $pagetitle;
aus. Geht auch wunderbar. Dann wir mir halt nen ganz normalen Text angezeigt.

Ich hätte jetzt aber gerne, dass es nicht als ein Text (Buchstaben) ausgegeben wird, sondern als ein Bild, welches automatisch generiert worden ist.
Also hab ich den obrigen Text mit:
Code:
                     $im = imagecreate( 108, 15 ); 
                     $textcolor = imageColorallocate( $im, 255, 255, 255 );
                     $black = imagecolortransparent($im, 22, 22, 22 );
                     ImageFilledRectangle($im, 0, 0, 108, 15, $black);  
                     imagestring( $im, 3, 0, 0, $pagetitle, $textcolor ); 
                     imagejpeg( $im, '../Pfad/zum/Bild/contentheader1.jpg', 90 );
                     imagedestroy( $im );
                     echo( "
                      <img align=\"middle\" src=\"../Pfad/zum/Bild/contentheader1.jpg\" border=\"0\" alt=\"Contentheader\"/>
                      \n
                     " );
ersetzt. Also es wird ein Bild generiert ;) Aber leider ist des nen weisses Kästchen mit den Größenwerten von 108x15px :freak:

Also, meine Fragen:
1. Wie bekomm ich es hin, dass der Text da ausgegeben wird, und nicht nur ein weisses Kästchen?
2. Ich hätte gernen nen transparanten Hintergrund, was is des fürn Befehl? Oder wie wende ich "imagecolortransparent()" - richtig - an?
3. Gibt es vorerst nicht ;)
 
AW: [PHP]Bild generieren lassen

Zum Text kann ich dir nicht viel sagen, aber du wärst der erste der es schafft ein jpeg tranzparent zu machen ...
Du musst für ein tranzparentes Bild natürlich ein Bild erzeugen, welches das auch unterstützt (GIF oder PNG)
Ausserdem würde ich das Bild nicht jedesmal erstellen, sondern immer nur wen es sich ändert, sonst hasst du zu lange ladezeiten weil php da nicht gerade der schnellste ist im Bildermachen
 
AW: [PHP]Bild generieren lassen

Um einen transparenten Hintergrund zu erstellen, muss das Bildformat entweder .gif oder .png sein. Jpeg unterstützt keine Transparenz:

PHP:
<html>
<body bgcolor="#404040">

<?php

$pagetitle = "Test 2 3 4";

$im = ImageCreate( 108, 15 );
$textcolor = ImageColorallocate( $im, 255, 255, 255 );
$black = ImageColorallocate($im, 22, 22, 22 );
ImageFilledRectangle($im, 0, 0, 108, 15, $black);  
ImageColorTransparent($im, $black);
ImageString( $im, 3, 0, 0, $pagetitle, $textcolor ); 
ImagePNG( $im, 'contentheader1.png', 90 );
ImageDestroy( $im );
echo "<img align=\"middle\" src=\"contentheader1.png\" border=\"0\" alt=\"Contentheader\"/>\n";

?>

</body></html>
 
AW: [PHP]Bild generieren lassen

Für jeden den es interessiert ;) - und für die Suchenden in der Zukunft.
Wir haben es jetzt so gelöst:

Code:
                   <?php 
                     $pagetitle = wurde schon woanders deklariert;

                     $im = imagecreate( 180, 38 ); 
                     $bg = imageColorallocate( $im, 179, 179, 179 );
                     $textcolor = imagecolorallocate( $im, 204, 204, 204 );
                     $trans = imagecolortransparent($im, $bg); 
                     imagefilledrectangle($im, 0, 0, 108, 38, $trans );
                     ImageTTFText ($im, 25, 0, 10, 31, $textcolor, "../der/Pfad/zur/Schriftart/nameDerSchriftart.TTF", $pagetitle ); 
                     imagegif( $im, '../der/Pfad/zum/generierenden/Bild/BildName.gif', 100 );
                     imagedestroy( $im );
                     echo( "
                      <img src=\"../der/Pfad/zum/Bild/BildName.gif\" border=\"0\" alt=\"alternativText\"/>
                      \n
                     " );
                   ?>
-> Der Code macht nen Bild (180x38px), welches transparent dargestellt wird. Auf diesem wird mit der "nameDerSchriftart.TTF" Schriftart ein Text generiert, der in $pagetitle definiert worden ist.
Die Ladezeiten sind eigentlicht wie früher geblieben, also keine spürbaren Verlangsamerungen.
 
AW: [PHP]Bild generieren lassen

üasst schon aber im ie werden die bilder nicht aktuallisiert-> hab das unterm menü drin....jetzt ist das problem das unter "news" immernoch "wetter" steht... im firefox ist das kein prob...

gibts so ne art repaint ???
 
AW: [PHP]Bild generieren lassen

Har genau das Problem hab ich auch :freak: Der Title von "Startseite" beispielsweise wird generiert. Jetzt geht der IE - Benutzer auf "Blubb" und da is immernoch des Bild mit der Schrift "Startseite", da es nicht neu generiert worden ist.
Im FireFox geht mal wieder alles problemlos :rolleyes: :(
 
AW: [PHP]Bild generieren lassen

P13RR3 schrieb:
Har genau das Problem hab ich auch :freak: Der Title von "Startseite" beispielsweise wird generiert. Jetzt geht der IE - Benutzer auf "Blubb" und da is immernoch des Bild mit der Schrift "Startseite", da es nicht neu generiert worden ist.
Im FireFox geht mal wieder alles problemlos :rolleyes: :(


Euer Problem dürfte der Browsercache sein. Der Firefox überprüft standardmäßig beim Laden eines Bildes ob dies verändert wurde, der IE scheinbar nicht. Als Lösung würde ich vorschlagen das Bild direkt auszugeben und das <img> Tag auf der Seite anzuzeigen. Das ganze müsste dann so aussehen.

Hauptseite, da wo das Bild angezeigt werden soll:
PHP:
<html>
   <head>
       <title>irgendein Titel</title>
   </head>
   <body>
       <img src="img_create.php?title=irgendein%20Titel" />
    </body>
</html>

Die Datei "img_create.php"
PHP:
<?php
$pagetitle = $_GET['title'];

$im = imagecreate( 180, 38 ); 
$bg = imageColorallocate( $im, 179, 179, 179 );
$textcolor = imagecolorallocate( $im, 204, 204, 204 );
$trans = imagecolortransparent($im, $bg); 
imagefilledrectangle($im, 0, 0, 108, 38, $trans );
ImageTTFText ($im, 25, 0, 10, 31, $textcolor, "../der/Pfad/zur/Schriftart/nameDerSchriftart.TTF", $pagetitle ); 
header('Content-type: image/png');
imagepng($im);
?>


So wird das Bild zwar auch immer zur Laufzeit erzeugt, aber der IE ist gezwungen das Bild zu aktualisieren.


Ciao
 
AW: [PHP]Bild generieren lassen

geht soweit ... das problem ist nur das ich jetzt ein bild habe das komplet transparent ist ;)
ich habe auch keine lösung gefunden es so auszusehen zulassen wie oben ;)

das was man sieht ist ein transparentes rechteck .... -> ohne schrift, man siehts wenn man die seite makiert ;)
 
Zurück
Oben