php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 2 Stimmen, 5,00 durchschnittlich.
  #1 (permalink)  
Alt 25-02-2012, 16:46
DjDope
 Registrierter Benutzer
Links : Onlinestatus : DjDope ist offline
Registriert seit: Feb 2012
Beiträge: 9
DjDope befindet sich auf einem aufstrebenden Ast
Standard Fehler mit imagefttext

Hi,

ich hab ein Script das ich mir vor Jahren mal zusammengebastelt habe um Bilder mit Text zu versehen wieder rausrgekramt und wollte was anderes daraus machen, nun hab die ganzen Funktionen etc. die ich nicht mehr benötige ausgebaut und alles läuft noch 1a mit diesem Code, wenn ich dann aber mit imagefttext einen Text einfügen will wird mir das Bild nicht mehr angezeigt. Der imagefttext-Teil des Codes ist der Originale aus dem OriginalScript, sollte also eigentlich keine Probleme machen, tut er aber!

Hier der Code mit dem ich arbeite (der Fehler liegt sicher am imagefttext da es funktioniert wenn der imagefttext-teil weg ist)

PHP-Code:
header ("Content-type: image/png");
$ges $_GET["ges"];
$pic $_GET["pic"];
$text1 $_GET["text1"];
$text2 $_GET["text2"];
$gros "12";
$gros2 "10";
$font_file "southpark.ttf";
$vorl "$ges/$pic.png";
$Bild ImageCreateFromPNG($vorl);
$black imagecolorallocate($Bild0x000x000x00);
imagefttext($Bild$gros014125$black$font_file$text1);
imagefttext($Bild$gros2044125$black$font_file$text2);
ImagePNG ($Bild); 
Wo liegt da der Fehler?
Mit Zitat antworten
  #2 (permalink)  
Alt 29-02-2012, 21:09
DjDope
 Registrierter Benutzer
Links : Onlinestatus : DjDope ist offline
Registriert seit: Feb 2012
Beiträge: 9
DjDope befindet sich auf einem aufstrebenden Ast
Standard

Keiner eine Idee?
Mit Zitat antworten
  #3 (permalink)  
Alt 29-02-2012, 21:23
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.722
Kropff befindet sich auf einem aufstrebenden Ast
Standard

imagettftext benötigt sowohl die gdlib als auch freetype. Sind beide Erweiterungen bei dir vorhanden? Ansonsten solltest du ggf. nur die Funktionen der gdlib benutzen.

Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #4 (permalink)  
Alt 01-03-2012, 00:52
DjDope
 Registrierter Benutzer
Links : Onlinestatus : DjDope ist offline
Registriert seit: Feb 2012
Beiträge: 9
DjDope befindet sich auf einem aufstrebenden Ast
Standard

Ist beides vorhanden, ich nutze wie gesagt den selben Code mit ein paar DB-Abfragen zusammen in 2 Scripten auf dem selben Server und da funktioniert es ohne probleme, nur hier funktioniert es auf einmal nicht mehr.
Mit Zitat antworten
  #5 (permalink)  
Alt 02-03-2012, 11:08
Benutzerbild von fireweasel fireweasel
 Registrierter Benutzer
Links : Onlinestatus : fireweasel ist offline
Registriert seit: Sep 2008
Ort: At home
Beiträge: 851
fireweasel wird schon bald berühmt werdenfireweasel wird schon bald berühmt werden
fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken
Standard

Zitat:
Zitat von DjDope Beitrag anzeigen
Hi,

ich hab ein Script das ich mir vor Jahren mal zusammengebastelt habe um Bilder mit Text zu versehen wieder rausrgekramt und wollte was anderes daraus machen, nun hab die ganzen Funktionen etc. die ich nicht mehr benötige ausgebaut und alles läuft noch 1a mit diesem Code, wenn ich dann aber mit imagefttext einen Text einfügen will wird mir das Bild nicht mehr angezeigt. Der imagefttext-Teil des Codes ist der Originale aus dem OriginalScript, sollte also eigentlich keine Probleme machen, tut er aber!

Hier der Code mit dem ich arbeite (der Fehler liegt sicher am imagefttext da es funktioniert wenn der imagefttext-teil weg ist)
Du weißt zwar nicht genau, was dein Quelltext macht, bist dir aber sicher, dass der Fehler an imagefttext liegt?

Dreh error_reporting() auf die höchste Stufe, schalte das Error-Logging ein. Außerdem liefern viele Funktionen einen Rückgabewert. Den kann man sich anzeigen lassen. Schließlich kann imagePNG() die Binärdaten der Grafik auch in eine Datei speichern, anstatt sie direkt in den Ausgabekanal zu schieben. Mach das mal und entferne die header()-Ausgaben, dann siehst du vielleicht auch eine Fehlermeldung.

Auch würde ich mal nachsehen, ob die Font-Datei "southpark.ttf" überhaupt im aktuell erreichbaren Pfad liegt. Bei TTF müsste übrigens auch imagettftext() funktionieren. Imagefttext() benötigt (laut Handbuch) ein mit Freetype2 compiliertes PHP. Ob das bei dir der Fall ist, sagt dir phpinfo() (mit Versionsinformation) oder gd_info() (ohne Versionsinformation).
Mit Zitat antworten
  #6 (permalink)  
Alt 02-03-2012, 14:38
DjDope
 Registrierter Benutzer
Links : Onlinestatus : DjDope ist offline
Registriert seit: Feb 2012
Beiträge: 9
DjDope befindet sich auf einem aufstrebenden Ast
Standard

Das ist es ja, alles ist soweit korrekt und das Bild wird auch generiert und angezeigt wenn ich das imageftttext weglasse. Und imagettftext kann ich nicht verwenden da ich die Größe einstellen will etc. das geht ja nur bei imagefttext. Und Freetype etc. ist alles vorhanden, das selbe Script mit DB-Abfragen etc. funktioniert tadellos auf dem selbem Server.


PHP-Code:
# Typ festlegen, vorher exestieren KEINE Zeichen!
header ("Content-type: image/png"); 

# $ges wird per GET übergeben und hat den Wert 1
$ges $_GET["ges"];

# $pic wird per GET übergeben und hat den Wert 10
$pic $_GET["pic"]; 

# $text1 wird Urlencoded per GET übergeben und hat den Wert "TESTTEXT" (Ohne ")
$text1 $_GET["text1"]; 

# $text2 wird Urlencoded per GET übergeben und hat den Wert "Hallo Welt" (Ohne ")
$text2 $_GET["text2"]; 

# Festlegen der ersten Schriftgöße
$gros "12"

# Festlegen der zweiten Schriftgröße
$gros2 "10"

# Font-File festlegen, liegt im selben Verzeichniss wie alle anderen Dateien
$font_file "southpark.ttf"

# Bildnamen und Pfad erstellen (1/10.png)
$vorl "$ges/$pic.png"

# Bildvorlage einlesen
$Bild ImageCreateFromPNG($vorl); 

# Schriftfarbe 1 festlegen
$black imagecolorallocate($Bild0x000x000x00);

# ersten Text einfügen
imagefttext($Bild$gros014125$black$font_file$text1); 

# zweiten Text einfügen
imagefttext($Bild$gros2044125$black$font_file$text2); 

# Bild ausgeben
ImagePNG ($Bild); 
Mit Zitat antworten
  #7 (permalink)  
Alt 02-03-2012, 16:34
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Hallo,

Zitat:
Zitat von DjDope Beitrag anzeigen
Und imagettftext kann ich nicht verwenden da ich die Größe einstellen will etc. das geht ja nur bei imagefttext
natürlich kannst du auch bei imagettftext die Schriftgröße angeben. Davon angesehen hat dir fireweasel bereits die häufigsten Fehlerquellen aufgelistet und dich auf das Error-Reporting verwiesen. Vielleicht solltest du seine Hinweise mal der Reihe nach abarbeiten und dir vor allem die Unterschiede zwischen diesem und dem funktionierenden Script herausarbeiten. Wenn die so gleich wären, wie du sagst,müsste es ja funktionieren. Also liegt der Fehler offenbar doch in den kleinen Unterschieden und das kann sogar mal „nur“ ein unterschiedlicher Pfad sein.

Gruß,

Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #8 (permalink)  
Alt 02-03-2012, 17:15
DjDope
 Registrierter Benutzer
Links : Onlinestatus : DjDope ist offline
Registriert seit: Feb 2012
Beiträge: 9
DjDope befindet sich auf einem aufstrebenden Ast
Standard

Des Rätsels Lösung: Der Fontname darf wohl nur 8+3 Zeichen lang sein, war aber 9+3, jetzt einfach das Park weg gelassen und es geht

allen für die Hilfe
Mit Zitat antworten
  #9 (permalink)  
Alt 02-03-2012, 17:38
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von DjDope Beitrag anzeigen
Des Rätsels Lösung: Der Fontname darf wohl nur 8+3 Zeichen lang sein, war aber 9+3, jetzt einfach das Park weg gelassen und es geht

allen für die Hilfe
Darauf wär ich nie gekommen. Wenn es wirklich daran lag, solltest du einen Bug Report posten.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #10 (permalink)  
Alt 03-03-2012, 02:00
DjDope
 Registrierter Benutzer
Links : Onlinestatus : DjDope ist offline
Registriert seit: Feb 2012
Beiträge: 9
DjDope befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von AmicaNoctis Beitrag anzeigen
Darauf wär ich nie gekommen. Wenn es wirklich daran lag, solltest du einen Bug Report posten.
Bin ich auch nur durch zufall, dachte an die gute alte Dos-Zeit, da gingen doch auch nur 8+3

Bug Report posten? Wie/Wo soll ich sowas machen?
Mit Zitat antworten
  #11 (permalink)  
Alt 03-03-2012, 09:27
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von DjDope Beitrag anzeigen
Bug Report posten? Wie/Wo soll ich sowas machen?
http://bugs.php.net/
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #12 (permalink)  
Alt 05-03-2012, 13:27
Benutzerbild von fireweasel fireweasel
 Registrierter Benutzer
Links : Onlinestatus : fireweasel ist offline
Registriert seit: Sep 2008
Ort: At home
Beiträge: 851
fireweasel wird schon bald berühmt werdenfireweasel wird schon bald berühmt werden
fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken
Standard

Ich wollte ursprünglich schreiben, dass du zuerst einmal die Ursache dieses merkwürdigen Verhaltens recherchierst, bevor du einen Bugreport absetzt.

Zu spät.

Der Bug-Report wäre übrigens hier passender gewesen:
https://bitbucket.org/pierrejoye/gd-libgd/issues

Zitat:
Zitat von DjDope Beitrag anzeigen
Des Rätsels Lösung: Der Fontname darf wohl nur 8+3 Zeichen lang sein, war aber 9+3, jetzt einfach das Park weg gelassen und es geht
So wie es aussieht, kann der Parameter $fontname mehrdeutig interpretiert werden[0]. Man kann damit mehrere Pfade angeben, an denen nach der Font-Datei gesucht wird. Bei älteren LibGD-Versionen war wohl als Separator für die verschiedenen Pfade ein Leerzeichen (m() vorgesehen. Das gab selbstverständlich Probleme, wenn Pfade selbst Leerzeichen enthielten. Der Fehler wurde dadurch "behoben", dass jetzt ein Semikolon die Pfade trennt.

Zitat, PHP-Handbuch, Funktion imagefttext(), Parameter $fontfile:

Zitat:
(...)
When using versions of the GD library lower than 2.0.18, a space character, rather than a semicolon, was used as the 'path separator' for different font files. Unintentional use of this feature will result in the warning message: Warning: Could not find/open font. For these affected versions, the only solution is moving the font to a path which does not contain spaces.

In many cases where a font resides in the same directory as the script using it the following trick will alleviate any include problems.

(...)
Die Funktion imagettftext() ist (oder war) übrigens gleichermaßen betroffen.

Als ein Workaround wurde für Windows-Betriebssysteme auch der Short-Name-Trick empfohlen.

Die betroffene LibGD-Version 2.0.18 hat allerdings schon ein paar Jährchen auf dem Buckel. Aktuell dürfte 2.0.34 (oder neuer) sein. Leider konnte ich auf die Schnelle keine Übersicht finden, welche PHP-Version mit welcher GD-Version gebundelt wurde. Aber selbst wenn das die Ursache für dein Problem wäre, müsste dein PHP schon ziemlich betagt sein.

Zitat:
(...)

Depending on which version of the GD library PHP is using, when fontfile does not begin with a leading / then .ttf will be appended to the filename and the library will attempt to search for that filename along a library-defined font path.

(...)
Dieser Abschnitt lässt noch eine weitere Interpretation zu: Der Parameter $fontfile "vermurkst" lokale Pfadangaben (so wie deine). Unklar ist nur, wie eine Verkürzung des lokalen Pfades um ein Zeichen dann plötzlich gefunden werden sollte. Unter Windows könnte man per ProcessMonitor die Pfadaufrufe mitloggen um nachzuvollziehen, wie die Zeichenkette umgewandelt wird.

Auch müsste das Ersetzen des relativen Pfades durch einen absoluten den Fehler beseitigen. Probeweise so:
PHP-Code:
imagefttext(..., realpath($fontfile), ...); 
--
[0] Genaueres lässt sich erst nach einem Blick in die (Freetype-?)Quellcodes sagen. Mal schauen ...

Der zweite Zitat-Abschnitt scheint Unsinn zu erzählen. Die Existenz eines Font-Files wird geprüft, indem an jeden angegebenen Pfad erst ein Leerstring, dann ".ttf", ".pfa", ".pfb" und schließlich ".dfont" angehängt wird.

https://bitbucket.org/pierrejoye/gd-.../gdft.c#cl-430

Begrenzungen der Namenslänge auf 8.3 Zeichen habe ich (bisher) keine entdecken können ...

Geändert von fireweasel (05-03-2012 um 14:15 Uhr) Grund: ProcessMonitor nicht ...Explorer m(
Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
fehler, imagefttext, php


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
fehler mit klasse florian1x PHP Developer Forum 5 17-08-2009 23:45
Fehler bei imagefttext Ausgabe trainmen PHP Developer Forum 4 23-03-2008 20:56
gd imagefttext flags und argumente frank7l7 PHP Developer Forum 4 09-04-2007 20:15
Fehler mit num_rows netleader PHP Developer Forum 6 29-01-2003 16:03
Select mit 2 Tabellen mit Where ->Fehler dr.evil PHP Developer Forum 1 04-10-2002 17:05

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script ansehen ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script

Mit unserer Lösungen können Sie nahezu jeden B2B / B2C Marktplatz betreiben den Sie sich vorstellen können. Ganz egal ob Sie einen Automarktplatz, Immobilenportal oder einfach einen Anzeigenmarkt betreiben möchten. Mit ebiz-trader können Sie Ihre Anforder

11.10.2018 Berni | Kategorie: PHP/ Anzeigenmarkt
PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
 Alle PHP Scripte anzeigen

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