• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Variablen Problem

coolerj

Neues Mitglied
Hallo

Wenn ich die Seite aufrufe http://localhost/*/classes/text.php?text=Hallo\n dann geht mein Skript nicht setzte ich allerdings die Variable text fest geht mein Code:
PHP:
<?php
    $text = $_GET['text'];
    $ttfsize = 20;
    //echo $text;
    header('Content-type: image/png');
    $ttf = "./ttf/metin2.ttf"; //Schriftart
    $bbox = imagettfbbox($ttfsize, 0, $ttf, $text);
    $width = $bbox[4] - $bbox[6] + 5;
    $height = $bbox[1] - $bbox[6];
    $image = imagecreate($width, $height);
    $black = ImageColorAllocate ($image, 0, 0, 0);
    $white = ImageColorAllocate ($image, 255, 255, 255);
    imagecolortransparent($image, $black);
    $png = imagettftext($image, $ttfsize, 0, 0, $ttfsize, $white,$ttf, $text);
    imagepng($image);
    imagedestroy($image);
?>
 
Zuletzt bearbeitet:
der wert von $text ist bei der verwendung noch ein string und geht deswegen noch nicht *glaub*
versuch mal so
PHP:
$tmp = $_GET['text'];
$text = $tmp;
 
so gehts immer noch nicht.
PHP:
<?php
    $tmp = $_GET['text'];
    $text = $tmp; 
    $ttfsize = 20;
    header('Content-type: image/png');
    $ttf = "./ttf/metin2.ttf"; //Schriftart
    $bbox = imagettfbbox($ttfsize, 0, $ttf, $text);
    $width = $bbox[4] - $bbox[6] + 5;
    $height = $bbox[1] - $bbox[6];
    $image = imagecreate($width, $height);
    $black = ImageColorAllocate ($image, 0, 0, 0);
    $white = ImageColorAllocate ($image, 255, 255, 255);
    imagecolortransparent($image, $black);
    $png = imagettftext($image, $ttfsize, 0, 0, $ttfsize, $white,$ttf, $text);
    imagepng($image);
    imagedestroy($image);
?>
 
Die Rückgabe von imagettfbbox scheint die "Baseline"-Abstände der Schriftart irgendwie als negative Zahlen zu beinhalten. Die muss man mit einbeziehen. So scheint es zu gehen (war aber teilweise trial & error :)).

PHP:
<?php

// Beispiel
$_GET['text'] = "a1\nb1\nc3\ngxyz";

$text = $_GET['text'];
$ttfsize = 20;

$ttf = './ttf/metin2.ttf'; //Schriftart

$bbox   = imagettfbbox($ttfsize, 0, $ttf, $text);
$width  = abs($bbox[0]) + abs($bbox[2]); // distance from left to right
$height = abs($bbox[1]) + abs($bbox[5]); // distance from top to bottom

$image = imagecreatetruecolor($width, $height);

$black = imagecolorallocate($image,   0,   0,   0);
$white = imagecolorallocate($image, 255, 255, 255);
$red   = imagecolorallocate($image, 255,   0,   0);

// weiß auf transparent auf weiß sieht man so schlecht
imagefilledrectangle($image, 0, 0, $width, $height, $red);

imagecolortransparent($image, $black);
imagettftext($image, $ttfsize, 0, 0, $height - $bbox[1], $white, $ttf, $text);

header('Content-type: image/png');
imagepng($image);
imagedestroy($image);

Außerdem:

coolerj schrieb:
Wenn ich die Seite aufrufe http://localhost/*/classes/text.php?text=Hallo\n dann geht mein Skript nicht setzte ich allerdings die Variable text fest geht mein Code:

coolerj schrieb:
Es geht ja ohne das \n auch per direkte Setzung nicht.

coolerj schrieb:
so gehts immer noch nicht.

Bitte überdenke mal deine Art, Fragen zu stellen. Das motiviert nicht gerade, dir zu helfen. Du könntest zumindest versuchen, das Problem einzugrenzen. Viel anderes machen die Leute, die antworten, oft auch nicht. :)
 
Der Kommentar erklärt, weshalb ich einen roten Hintergrund in meinem Beispiel hinzugefügt habe, obwohl der in deinem Code bisher nicht enthalten war. Er ist eine Verständnishilfe. Ob das für das, was du mit meinem Beispiel machst, relevant ist, ist seinerseits völlig unerheblich.
 
Zurück
Oben