Shop-Hilfe.com
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 13.11.2006, 16:16   #1
TP-Supporter
 
Registriert seit: Dec 2005
[jacky] ist auf einem guten Weg

Text ins Bild schreiben


Hey,

ich möchte einen Text vertikal in ein Bild schreiben, aber stehe gerade auf dem Schlauch bzw schaffe es nicht!

Das folgende Script funktioniert, solange ich es horizontal schreibe; also den Winkel nicht ändere:

PHP-Code:
<?php
header
('Content-type: image/png');

// Setup
$text             'Max Mustermann';
$fontfile         'arial.ttf';
$fontsize         20
$fontangle        0
 
// Ausmaße des Feldes ermitteln, den unser Text braucht
$textfield        imagettfbbox($fontsize$fontangle$fontfile$text); 
$text_size_x      = (abs($textfield[4] - $textfield[0]) + 5);
$text_size_y      = (abs($textfield[1] - $textfield[7]) + 5);
$text_pos_x       0;
$text_pos_y       = ($text_size_y 7);
 
// Unser Arbeitsbild erstellen
$new_picture      imagecreate($text_size_x$text_size_y);
 
// Farben bestimmen
$background_color imagecolorallocate($new_picture221216209);
$text_color       imagecolorallocate($new_picture000);
 
imagefill($new_picture00$background_color);
imagettftext($new_picture$fontsize$fontangle$text_pos_x$text_pos_y$text_color$fontfile$text);
 
// Hintergund transparent stellen
#imagecolortransparent($new_picture, $background_color);
 
// Ausgabe des Bildes und anschliessende Löschung aus dem Speicher
imagepng($new_picture);
imagedestroy($new_picture);
 
?>
Seltsamerweise funktioniert es nicht mehr, sobald ich $fontangle auf 90 stelle! Vertausche ich die X und Y Variablen (also z.B. $text_size_x und $text_size_y), wird es trotzdem nicht richtig dargestellt!?

Wo liegt der Denkfehler?

Am Besten Ihr testet es einfach selbst aus! Dazu müsstet Ihr noch die Arial Schriftartdatei in das selbe Verzeichnis wie das Script kopieren!

Danke und Gruß!!
[jacky] ist offline   Mit Zitat antworten


Alt 15.11.2006, 07:31   #2
TP-Supporter
 
Registriert seit: Dec 2005
[jacky] ist auf einem guten Weg
Niemand ne Ahnung?
[jacky] ist offline   Mit Zitat antworten
Alt 15.11.2006, 10:05   #3
TP-Insider
 
Benutzerbild von SteffenR
 
Registriert seit: Dec 2004
Ort: Braunschweig
SteffenR bringt sich richtig einSteffenR bringt sich richtig ein
Eigentlich funktioniert das Script - das siehst du ja wenn du bspw. 15 angibst .
Das Problem besteht wohl darin, dass die Funktion die Grösse der Box bei größeren Winkeln nicht mehr anpasst..

Versuch mal die Werte wie folgt anzuändern - dann funktioniert es..
PHP-Code:
$fontsize         20
$fontangle        90
PHP-Code:
$text_pos_x       100;
$text_pos_y       500;
 
// Unser Arbeitsbild erstellen
$new_picture      imagecreate(500,600); 

Gruss
SteffenR

Geändert von SteffenR (15.11.2006 um 10:09 Uhr).
SteffenR ist offline   Mit Zitat antworten
Alt 15.11.2006, 14:28   #4
TP-Supporter
 
Registriert seit: Dec 2005
[jacky] ist auf einem guten Weg
Ah ok, ich verstehe schonmal das Problem ein bischen besser. Ich habe´den Code nun wie folgt geändert:

PHP-Code:
<?php
header
('Content-type: image/png');

// Setup
$text             'Björn';
$fontfile         'arial.ttf';
$fontsize         10
$fontangle        90
 
// Ausmaße des Feldes ermitteln, den unser Text braucht
$textfield        imagettfbbox($fontsize0$fontfile$text); 
$text_size_x      = (abs($textfield[4] - $textfield[0]) + 5);
$textfield        imagettfbbox($fontsize$fontangle$fontfile$text); 
$text_size_y      = (abs($textfield[1] - $textfield[7]) + 5);
$text_pos_x       12;
$text_pos_y       = ($text_size_y 27.4);

// Unser Arbeitsbild erstellen
$new_picture      imagecreate(17$text_size_x);  
 
// Farben bestimmen
$background_color imagecolorallocate($new_picture221216209);
$text_color       imagecolorallocate($new_picture000);
 
imagefill($new_picture00$background_color);
imagettftext($new_picture$fontsize$fontangle$text_pos_x$text_pos_y$text_color$fontfile$text);
 
// Hintergund transparent stellen
#imagecolortransparent($new_picture, $background_color);
 
// Ausgabe des Bildes und anschliessende Löschung aus dem Speicher
imagepng($new_picture);
imagedestroy($new_picture);
 
?>
Irgendwie funktioniert es noch nicht, dass die Höhe berechnet wird. Ich dachte zuerst, dass ich einfach die Breite des Textes berechne, wie wenn ich halt den Text horizontal schreibe (daher auch 0 als Angleparameter in imagettfbbox()) und benutzte dies dann einfach als y-Koordinate in imagecreate(). Aber irgendwie hat das nicht funktioniert! Der Text wurde falsch platziert ...

In meinem Code hier geht es nocht; ändere ich jedoch den Namen (dieser soll ja später dynakisch sein), dann muss ich auch gleichzeitig die Zahl in dieser Zeile ändern, damit der Text wieder richtig ins Bild geschrieben wird:

$text_pos_y = ($text_size_y + 27.4);

Aber keine Ahnung, nach welchem Schema sich die Zahl hier verändert, damit ich das dynamisch berechnen kann

Vielleicht wisst Ihr ja weiter; wäre klasse!!

Danke!

Edit: Habs!! Die Zeile muss natürlich wie folgt lauten:

$text_pos_y = $text_size_x - 1;


Geändert von [jacky] (15.11.2006 um 14:43 Uhr).
[jacky] ist offline   Mit Zitat antworten
Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > Traum-Dynamik
Text ins Bild schreiben Text ins Bild schreiben
« [Suche] Zugangsverwaltung | Arrays zusammenführen und Werte ersetzten »

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Thema bewerten
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.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 06:23 Uhr.

Powered by: vBulletin Version 3.7 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd. / Search Engine Friendly URLs by vBSEO 3.2.0 ©2008, Crawlability, Inc.
Traum-Projekt.com | Suchen | Archiv | Impressum | Kontakt | | | Nach oben |



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67