 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, Deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
28.06.2004, 18:27
|
#1
|
|
TP-Senior
Registriert seit: Apr 2002
Ort: Saarbrücken
|
Bild + Text = Bild
Hallo,
ich hoffe mir kann jemand helfen. Ich habe ein Bild (unterschiedliche Grössen) und einen Text der sich täglich ändert. Nun möchte ich das unter dem Bild noch ein Bild (gif oder jpg) entsteht mit diesem Text der sich täglich ändert(Daten kommen aus DB).
Die Daten bekomme ich logischerweise aus der DB, aber wie kann ich die als Bild speichern? Geht das überhaupt, jemand eine Idee?
Vielen Dank schon mal!
lg Emily
|
|
|
28.06.2004, 18:35
|
#2
|
|
TP-Moderator
Registriert seit: Jun 2004
Ort: Hannover
|
Das kannst du mittels imagecreatefromgif() und ImageTTFText() machen..
|
|
|
28.06.2004, 18:37
|
#3
|
|
TP-Senior
Registriert seit: Apr 2002
Ort: Saarbrücken
|
Danke schöööööööööön, das ist ja schon mal ein Anfang, muss ich da noch was installieren (bzgl. imagecreatefromgif() und ImageTTFText() ), oder geht das einfach so?
|
|
|
28.06.2004, 19:05
|
#4
|
|
TP-Insider
Registriert seit: May 2003
Ort: Aachen
|
Du brauchst auf deinem Server die GDLib
__________________
"Man muss die Welt nicht verstehen, man muss sich nur darin zurechtfinden."
Einstein
|
|
|
28.06.2004, 19:10
|
#5
|
|
TP-Senior
Registriert seit: Apr 2002
Ort: Saarbrücken
|
Ah ok, die habe ich - GDVersion 1.6.2, sollte wohl reichen - dann probiere ich das mal.
|
|
|
28.06.2004, 20:16
|
#6
|
|
TP-Moderator
Registriert seit: Jun 2004
Ort: Hannover
|
Mit der GD_Version 1.6.2 hats noch den Vorteil, daß du als GIF ausgeben kannst.
Was bei neueren Versionen nicht mehr möglich ist (wg. Lizenzprobs beim GIF-Encoder). Deswegen würde ich dir empfehlen, das Bild entweder als jpg oder png auszugeben. Um das Script bei einem Serverupdate lauffähig zu halten.
Die Transparenzen von GD erzeugten PNGs sind auch im IE vorhanden (nicht diese Graue Unterlegung..).
Du solltest das Script in etwa so aufbauen:
Text auslesen und Schriftart, Schriftgröße einstellen.
Dann die Textgröße ermitteln mittels imagettfbbox().
Und einen Rahmen um die Schrift geben: (also wieviel abstand minimal zum Bildrand:
$box=imagettfbbox($s,0,$font,$txt);
$size=abs($box[2]+$r);
$s=Schriftgröße in Pixel
$font= Serverpfad zu einer Schriftdatei im TTF-Format
$txt= Text aus der DB
$r= Rahmen.
Damit hast du ein Array der Bilddimensionen. Die musst du dann mit dem Ursprungsbild abgleichen, damit das Bild nicht zu klein erstellt wird (imagegröße<Textgröße) und der Text abgeschnitten wird.
Du kannst auch erst die Größe des Hintergrundbildes erstellen und dann die Schriftgröße mit einer for-Schleife solange durchlaufen lassen, bis Schriftzug<Hintergrundbild ist..
|
|
|
29.06.2004, 16:40
|
#7
|
|
TP-Senior
Registriert seit: Apr 2002
Ort: Saarbrücken
|
Danke, habe aber noch ein Problem:
Wenn ein ein Bild mit imagecreatefrompng einfüge erscheint das Bild leider ganz komisch, würde fast sagen, 256 Farben. Wenn ich einen Text darauf schreibe, erscheint dieser in richtiger Farbe.
Arbeite ich mit imagecreatefromjpeg, ist das Bild OK, allerdings die Schriftfarbe ist immer grau, egal ob ich rot mache oder grün.
Was mache ich falsch?
$img = imagecreatefromjpeg("test.jpg");
$farbe= imagecolorallocate($img,0,0,0);
imagestring($img,3,0,0,"Test-Test",$farbe);
imagejpeg($img);
bzw das ganze halt mit png...
Danke!
Lg Emily
|
|
|
29.06.2004, 23:51
|
#8
|
|
TP-Moderator
Registriert seit: Jun 2004
Ort: Hannover
|
Ich habe mal was gebastelt, was klappen könnte. Ist aber noch nicht getestet. Wenn ich dich richtig verstanden hatte, sollte es genau das sein, was du wolltest..
PHP-Code:
<?php
$txt=Test; //Text aus der Datenbank
$size=getimagesize("Bildpfad"); //Größe des Hintergrundbildes
$s=12; //Maximale Schriftgröße muss angegeben werden
$r=5; // Standartrahmen um den Text
$font="/www/server/irgendwas/domain/directory/schrift.ttf"; //Pfad zur Schriftdatei im Serverformat. Hier nur ein Beispiel um zu verdeutlichen, wie er aussehen kann. Kriegt man zB. mit $_SERVER[DOCUMENT_ROOT]
for ($x=$s;$x>0;$x--) {
// Schriftbildgrösse ermitteln
$box=imagettfbbox($x,0,$font,$txt);
if ($box[4]+$r<=$size[0] && abs($box[7])+$r<=$size1 )
{
$s=$x;
BREAK;
}
}
$image1 = imagecreatetruecolor($box[4]+$r, abs($box[7])+$r); //Grundbild in 32 Bit erstellen
$image = imagecreatefromjpeg("Bildpfad"); //Hintergrundbild aus Datei einfügen
$tc = ImageColorAllocate ($im, 192, 0, 0); // Textfarbe
imageTTFText ($image1, $s, 0, 0, abs($box[7]) , $tc, $font, $txt); // Text einfügen
imageinterlace($image1,1); //Interlace aktivieren
ImageCopy($image1,$image,0,0, 0,0,$size[0],$size[1],$size[0],$size[1]); //Bild erstellen
header("Content-Type: image/jpeg"); //Header ausgeben
ImageJpeg($image1); //Bild ausgeben
ImageDestroy ($image1); //
?>
|
|
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
Thema durchsuchen |
|
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 08:19 Uhr.
|
 |