php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 19.04.2011, 20:55  
Rob
Neuer Benutzer
 
Registriert seit: 31.03.2011
Beiträge: 3
PHP-Kenntnisse:
Anfänger
Rob befindet sich auf einem aufstrebenden Ast
Standard Imagecreat()-Bildbreite in Abhängikeite der Stringlänge

Guten Abend,

nachdem ich im Internet (und auch hier) bisher keine Lösung zu meinem Problem gefunden habe, frage ich einfach mal nach.

Folgendes Vorhaben steht im Raum:
Ich möchte via PHP ein Bild erstellen, welchen eine unbestimmte Zeichenkette enthalten soll, soweit kein Problem.
Nun ist die Zeichenkette undefiniert lang .. (1-30 Zeichen) und mir fehlt der Denkanstoß, wie ich dynamisch die Bildbreite regeln soll. Mir ist da leider keine passende Methode bekannt.

Würde es sich um eine nichtpropotionale Schriftart handeln, wäre es kein Problem, aber diesen Luxus habe ich leider nicht.
(Die Zeichen haben verschiedene Breiten)

Habt ihr vielleicht eine Idee, wie ich rangehen sollte?

mfg
Rob ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 19.04.2011, 21:03  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von Rob Beitrag anzeigen
Habt ihr vielleicht eine Idee, wie ich rangehen sollte?
Du könntest uns erst mal verraten, mit welchen Funktionen du überhaupt arbeitest.

Falls du den Text mit imagettftext ins Bild schreibst - RTFM, deren die Schriftmaße ausmessende Verwandte ist sogar auf der Handbuchseite verlinkt.
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 19.04.2011, 21:05  
Erfahrener Benutzer
 
Registriert seit: 23.08.2010
Beiträge: 495
PHP-Kenntnisse:
Fortgeschritten
mimomamu sorgt für eine eindrucksvolle Atmosphäremimomamu sorgt für eine eindrucksvolle Atmosphäre
Standard

imagettfbbox
__________________
Meinungen, die ich geäußert habe, sind nicht notwendigerweise meine eigenen. Abweichungen von der deutschen Rechtschreibung unterliegen dem Urheberrecht, dürfen aber unter den Bedingungen von verwendet werden
mimomamu ist offline   Mit Zitat antworten
Alt 19.04.2011, 21:17  
Rob
Neuer Benutzer
 
Registriert seit: 31.03.2011
Beiträge: 3
PHP-Kenntnisse:
Anfänger
Rob befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von mimomamu Beitrag anzeigen
Vielen Dank!
Eine solche Funktion hatte ich gesucht, aber nicht von selbst gefunden.

@ChrisB:
Sorry, ich dachte, dass die Angabe der verwendeten Funktion nicht wichtig gewesen wäre. Rein vom Funktionsnamen her, hätte ich imagettfbbox() aber sicherlich auch nicht für das gehalten, was ich gesucht habe.

Das Problem ist dann bis auf Weiteres gelöst, danke für die schnelle Hilfe!
Rob ist offline   Mit Zitat antworten
Alt 19.04.2011, 21:33  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Die Funktion selber liefert allerdings nicht immer die zuverlässigsten Werte - wenn's auf Pixelgenauigkeit nicht ankommt, kann man mit der leben, andernfalls empfiehlt sich ein Blick auf die Alternativen aus den Nutzerkommentaren.
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 19.04.2011, 21:45  
Rob
Neuer Benutzer
 
Registriert seit: 31.03.2011
Beiträge: 3
PHP-Kenntnisse:
Anfänger
Rob befindet sich auf einem aufstrebenden Ast
Standard

Mir persönlich langt die Genauigkeit.

Nur kann die (in meinem Fall) gegebene Zeichenkette zwischen 1 und 150 Zeichen lang sein, sodass ich 'ne dynamische Breitenbestimmung brauche .. aber auf einzelne Pixel kommt es wohl nicht an.

Aber je nach Resultat schau ich mir die Alternativen an!

mfg
Rob ist offline   Mit Zitat antworten
Alt 20.04.2011, 11:06  
Erfahrener Benutzer
 
Registriert seit: 23.08.2010
Beiträge: 495
PHP-Kenntnisse:
Fortgeschritten
mimomamu sorgt für eine eindrucksvolle Atmosphäremimomamu sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von Rob Beitrag anzeigen
Rein vom Funktionsnamen her, hätte ich imagettfbbox() aber sicherlich auch nicht für das gehalten, was ich gesucht habe.
Dafür gibt es im Handbuch eine Liste der GD and Image Functions inklusive Kurzbeschreibung (ja, das sind 102 Stück, aber die hat man in 3 Minuten durchgelesen).

Zitat:
Zitat von Rob Beitrag anzeigen
Aber je nach Resultat schau ich mir die Alternativen an!
Alternative ist, die von imagettfbbox gelieferte Größe zu verdoppeln, mit imagecreatetruecolor ein entsprechend großes Bild zu erzeugen, mit imagefill weiß anzumalen, dorthin mit schwarzer Schrift zu schreiben und dann mit imagecolorat nach Pixeln zu suchen die nicht mehr weiß sind. Dann ist jeder einzelne Buchstabe von einhundertprozentige Genauigkeit gerechtfertigt, allerdings auch jeder einzelne Buchstabe von Performance Nightmare.
__________________
Meinungen, die ich geäußert habe, sind nicht notwendigerweise meine eigenen. Abweichungen von der deutschen Rechtschreibung unterliegen dem Urheberrecht, dürfen aber unter den Bedingungen von verwendet werden

Geändert von mimomamu (20.04.2011 um 11:17 Uhr).
mimomamu ist offline   Mit Zitat antworten
Alt 21.04.2011, 10:17  
Erfahrener Benutzer
 
Benutzerbild von fireweasel
 
Registriert seit: 20.03.2010
Beiträge: 474
PHP-Kenntnisse:
Fortgeschritten
fireweasel ist ein Lichtblickfireweasel ist ein Lichtblickfireweasel ist ein Lichtblickfireweasel ist ein Lichtblickfireweasel ist ein Lichtblick
fireweasel eine Nachricht über ICQ schicken fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken fireweasel eine Nachricht über Skype™ schicken
Standard

Zitat:
Zitat von ChrisB Beitrag anzeigen
Die Funktion selber liefert allerdings nicht immer die zuverlässigsten Werte - wenn's auf Pixelgenauigkeit nicht ankommt, kann man mit der leben, andernfalls empfiehlt sich ein Blick auf die Alternativen aus den Nutzerkommentaren.
Mhmm, bei exakt waagerechten Texten hat imagettfbbox() bei mir noch nie versagt. Man muss nur die Koordinaten richtig auszuwerten wissen.

Anders war es bei frei rotiertem Text, da haut die Funktion je nach Winkel gehörig daneben. Man sollte meinen, dass das dieser Fehler endlich mal gefixt wäre.
fireweasel ist offline   Mit Zitat antworten
Alt 21.04.2011, 11:09  
Erfahrener Benutzer
 
Benutzerbild von peegee84
 
Registriert seit: 20.10.2010
Beiträge: 158
PHP-Kenntnisse:
Anfänger
peegee84 befindet sich auf einem aufstrebenden Ast
Standard

@ Rob

Ich habe mal sowas geschrieben: Aus meinem Fundus und anpassbar:
PHP-Code:
/**
*Bildgenerator
*@author Pierre Griese
*/
header("Content-Type: image/png");
//Hier wird der Header gesendet, der später die Bilder "rendert" ausser png kann auch jpeg dastehen

//////////////////////////////////////////////////////
$width 400// Später die Breite des Rechtecks
$height 60// Später die Höhe des Rechtecks
$img imagecreate($width$height); // Hier wird das Bild einer Variable zu gewiesen
//////////////////////////////////////////////////////


$black imagecolorallocate($img0175240);
$white imagecolorallocate($img255255255); 

imagefill($img00$black); 
imagestring($img22620$struct['title'], $white);    

imagestring($img22640$struct['number'], $white); //$nummer repräsentiert die nummer die eingetragen werden soll...



imagepng($img); // Hier wird das Bild PNG zugewiesen
imagedestroy($img); // Hier wird der Speicherplatz für andere Sachen geereinigt 
//Edit
Habe gerade gesehen das das kein imagettfbox enthält. Ich dachte da wäre mal was gewesen...
__________________
RealLife.exe was not able to start due to VirtualLife.exe is already active! Please try again later...
http://peegee84.deviantart.com
peegee84 ist offline   Mit Zitat antworten
Alt 21.04.2011, 11:35  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von fireweasel Beitrag anzeigen
Mhmm, bei exakt waagerechten Texten hat imagettfbbox() bei mir noch nie versagt.
Also zumindest relativ „ungenau“ habe ich es schon erlebt - zu ungenau, wenn das Ergebnisbild entsprechend knapp beschnitten sein soll.
Hängt aber auch stark von der verwendeten Schriftart ab, bei manchen liefert es bessere Ergebnisse als bei anderen.
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] [ICQ-Bot] var_dump/strlen zeigen doppelte Stringlänge? starbug PHP Tipps 2009 7 12.03.2009 17:30

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
imagettfbbox höhe verdoppeln, imagettftext stringlänge, stringlänge php, php bildbreite, die schriftmaße, dynamische bildbreite imagettftext, php imagecreate star, php stringlänge in pixel, stringlänge php bild

Alle Zeitangaben in WEZ +2. Es ist jetzt 01:33 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum