PHP-Version von GDlib

Huschi

Moderator
Hallo Leute,

aus aktuellem Anlass hab ich heut mal ne Frage:
Warum steht selbst in der neuesten PHP-Version unter GD folgendes:
Code:
PHP_GD_VERSION_STRING "bundled (2.0.28 compatible)"

Ich hab jetzt keinen Code-Vergleich vollzogen, aber es müsste doch eigendlich die neue GDlib 2.0.33 sein, oder?

Kann mich hierzu mal jemand aufklären?
Ein Kunde von mir behauptet nämlich steif und fest, seine Typo3-Bilder funktionieren nicht, weil es nicht die aktuelle GDlib ist... :(

huschi.
 
Last edited by a moderator:
"bundled" bedeutet das er die Pakete die beim PHP dabei sind (in dem Fall
2.0.28) nimmt. Du musst beim Configure einfach den Include deiner Header angeben dann nimmt er die installierte Version
 
Aha, es ist also tatsächlich die 2.0.28. Dann hab ich zwangsweise dazu noch ne Frage:
Warum ist das nicht auf seit 6 Monaten aktuelle 2.0.33 gehoben worden?
Gibt es dazu eine offizielle Begründung?

Und zu meinem Problem:
Hat jemand einen Hinweiß, warum Umlaute mit Freetype in dieser Version nicht funktionieren? Es wird immer der Umlaut selbst und das nachfolgende Zeichen verschluckt. Ich tippe auf ein Problem mit den Charsets.... :(

huschi.
 
Und zu meinem Problem:
Hat jemand einen Hinweiß, warum Umlaute mit Freetype in dieser Version nicht funktionieren? Es wird immer der Umlaut selbst und das nachfolgende Zeichen verschluckt. Ich tippe auf ein Problem mit den Charsets.... :(

Guten Abend,
also ich nutze PHP 5.1.6 mit bundled-gd und habe keine Probleme mit den Umlauten.
Zu Typo3: wird die Grafikausgabe dort nicht von Imagemagick vorgenommen?

MfG Micha
 
Ich hätte dazuschreiben sollen, daß es sich um Truetype-Fonts handelt (also ImageTTFText eingesetzt wird.) Hier gibt es tatsächlich Probleme...

Wer mag kann ja mal folgendes Ausprobieren. Als TTF kann jeder beliebige Windows-Font benutzt werden.
ACHTUNG: Es müssen im zweiten Text jeweils die Space zwischen &# und 228; entfernt werden.
Code:
<?
$theText1 = 'Umlaut test: ähem öhoe üben'; //funzt nicht
$theText2 = 'Umlaut test: &# 228;hem &# 246;hoe &# 252;ben'; //funzt

$XY = array(300, 44);
$txtPos = array(0, 15);
$fontSize = 9;
$dpi = 72;
$fontFile = 'fileadmin/templates/ttf/arial.ttf';

$im = imagecreate($XY[0], $XY[1]);
$Bcolor = ImageColorAllocate($im, HexDec('E0'), HexDec('E7'), HexDec('EF'));
ImageFilledRectangle($im, 0, 0, $XY[0], $XY[1], $Bcolor);
imagecolortransparent($im, $Bcolor);
$Fcolor = ImageColorAllocate($im, HexDec('23'), HexDec('39'), HexDec('58'));
$font_size = ($dpi != 72) ? $fontSize/$dpi*72 : $fontSize;
ImageTTFText($im, $font_size, 0, $txtPos[0], $txtPos[1], $Fcolor, $fontFile, $theText1);
ImageTTFText($im, $font_size, 0, $txtPos[0], $txtPos[1]+22, $Fcolor, $fontFile, $theText2);

header('content-type: image/gif');
imagegif($im);
imagedestroy($im);
?>

Es wäre für mich interessant ob eine GD ab Version 2.0.31 wirklich den ersten String schon richtig darstellt. Wäre super, wenn mir jemand dazu Info's liefern könnte. Danke.

PS: Hier ist vom Typo3-GifBuilder die Rede. Der nutzt ausschließlich die GDlib.

huschi.

/Edit: PHP umgeschrieben...
 
Last edited by a moderator:
Hallo Huschi.
Kannst du bitte mal einen Link zur PHPinfo() oder einen Screenshot zur "GD-Section" der PHPinfo() posten?
Würde die Sache evtl. vereinfachen.
 
Bitte sehr...

Nochmal zur Verdeutlichung meines Problems:
Mein Kunde behauptet steif und fest, eine GDlib >2.0.31 hätte diese Probleme nicht. Er kann mir aber keine URL sagen, wo das konkret so steht... :(
Also liegt es jetzt an mir entweder die GDlib zu installieren (PHP neu zu kompilieren) oder ihm klar zumachen, daß das auch keine Lösung bringt.

huschi.
 

Attachments

  • phpinfo_gd.gif
    phpinfo_gd.gif
    20.9 KB · Views: 200
Last edited by a moderator:
Gestattet dein arial.ttf vielleicht keine Umlaute?

Bei mir funktioniert dein Codeschnipsel. (bundled (2.0.28 compatible))
Lediglich mein Freetype ist etwas aktueller als deines.

Code:
$theText = 'Umlaut test: ä&# 228;hem ö&# 246;hoe ü&# 252;ben Š&# 138; ª& #170;';
 

Attachments

  • phpinfo.gif
    phpinfo.gif
    8.5 KB · Views: 140
  • test.gif
    test.gif
    2.1 KB · Views: 133
Last edited by a moderator:
..drei mal darfst du raten...
Ja, kann Umlaute darstellen. ;)

Du gibts aber den String an, der bei mir auch funzt.
Nicht ganz, ich habe beide Strings gemischt.
Aber auch der erste "Umlaut test: ähem öhoe üben" String laesst sich korrekt ausgeben.


Welche Versionsnummer hast Du?
FreeType Version 2.2.1
 
Ich hätte dazuschreiben sollen, daß es sich um Truetype-Fonts handelt (also ImageTTFText eingesetzt wird.) Hier gibt es tatsächlich Probleme...
Hatte ich vorausgesetzt...

PS: Hier ist vom Typo3-GifBuilder die Rede. Der nutzt ausschließlich die GDlib.
Sorry, ich war der Meinung Typo3 nutzt immer Imagemagick.

Ich hab dein Script mal probiert, mit Freetype 2.2.2 funktioniert es tadellos. Ich baue gerade PHP mit Freetype 2.1.9 neu, mal sehen, was dann passiert. Nur ich glaube nicht, das es daran liegt - ich hatte eigentlich noch nie Probleme mit Umlauten.
Ich hab übrigens Typo3 mit bundled GD schon seit längerem im Einsatz - ohne Probleme...

MfG Micha
 

Attachments

  • freetype-2.2.2.gif
    freetype-2.2.2.gif
    5.3 KB · Views: 123
  • freetype-2.2.2a.gif
    freetype-2.2.2a.gif
    895 bytes · Views: 124
So, jetzt mit Freetype 2.1.9 getestet - alles i.o.!
Nun steht natürlich die Frage, woran liegt es dann???

Aha, es ist also tatsächlich die 2.0.28. Dann hab ich zwangsweise dazu noch ne Frage:
Warum ist das nicht auf seit 6 Monaten aktuelle 2.0.33 gehoben worden?
Gibt es dazu eine offizielle Begründung?
PHP: Grafik-Funktionen - Manual meint dazu:
Anmerkung: Seit PHP 4.3 ist eine Version der GD-Bibliothek in PHP enthalten. Diese gebündelte Version bietet zusätzliche Möglichkeiten, wie z.B. alpha blending und sollte der externen Version immer vorgezogen werden (der Code wird besser betreut und ist stabiler).
Ich wusste doch, das ich mal irgend etwas darüber gelesen habe...

MfG Micha


 

Attachments

  • freetype-2.1.9.gif
    freetype-2.1.9.gif
    5.3 KB · Views: 104
  • freetype-2.1.9a.gif
    freetype-2.1.9a.gif
    895 bytes · Views: 93
Danke, da war ich schon auf der richtigen Seite, hab es aber nicht gelesen... :(
Dort (imagettftext) bin ich auf die Lösung mit den &#...; gekommen. Grundsätzlich stimmt dort die Aussage mein meiner Feststellung überein: Die Funktion kann keine Umlaute, sondern die müssen in UTF-8 sein.
Ich frag mich nur, warum es auf einem System (hab es inzwischen auch auf anderen Servern getestet) funzt und auf andern nicht. Könnte es mit den localized Einstellungen zu tun haben? :confused:

huschi.
 
Hallo Huschi,
Da bin ich doch auf etwas gestoßen: Wenn Du PHP mit
Code:
--enable-gd-jis-conv
kompillierst, dann tritt der Fehler auf, wie Du ihn beschrieben hast. Bei eingeschaltetem error_reporting kommt folgende Meldung:
Code:
Warning: imagettftext() [function.imagettftext]: [COLOR=Red][B]any2eucjp()[/B][/COLOR]: invalid code in input string in /srv/www/vhosts/net-bbg.net/subdomains/test/html/t1.php on line 18
(Das ist der String mit den Umlauten.) - ohne error_reporting siehe Grafik. Keine Ahnung, ob es für 'enable-gd-jis-conv' noch irgendwelche Parameter gibt, um das zu unterbinden. So auf die Schnelle hab ich keine gefunden.

MfG Micha
 

Attachments

  • japanese.gif
    japanese.gif
    7 KB · Views: 149
  • t1.gif
    t1.gif
    901 bytes · Views: 138
Also, nachdem ich nun mal Zeit dafür gefunden habe, hier die Auflösung:

Ja! Dieser "JIS-mapped Japanese Font Support" war für das Problem verantwortlich.
Ich hab die gd.so nochmals aus den PHP-Sourcen mit --disable-gd-jis-conv kompiliert und schon läufts.

Danke Micha für die Arbeit und den richtigen Tip!

huschi.
 
Gern geschehen :)
Das Problem hätte ich wohl auch bald bekommen, auf meinem neuen Server hab ich alles was geht in die GD mit eingschlossen... Der ist zwar noch nicht in Betrieb, aber irgendwann hätt ich dann auch dagesessen und gegrübelt.

MfG
Micha
 
Back
Top