Bild soll mit wachsen

Big-A

Mitglied
Hallo ihr Lieben,

ich hoffe das Ihr mir helfen könnt...

ich möchte, das ein Bild automatisch mitwächst, wenn die Schrift die auf dem Bild liegt größer wird.
Ist das verständlich?

z.B: ein Button auf dem steht, hier, im Russischen ist länger und im chinesischen kürzer, ich möchte, das dieses Bild vom Button sich der Schrift anpasst und unterschiedliche Bilder lädt...

Wenn mir einer helfen könnte oder sagen kann, wo sowas steht wäre ich mehr als dankbar...

ich habe schon gesucht, jedoch nicht gefunden.

Und rein logisch, müsste das mit php ja machbar sein.

Danke schon mal vorab.
 
Bevor du das Bild erstellt, kannst du mit imagettfbbox() die benötigte Grösser ermitteln

Nachtrag: Rechne noch in wenig Rand dazu - sonst wird nicht schön
 
Hallo Yaslaw,

danke für deine schnelle Hilfe...
Ich habe es versucht einzubinden, jedoch werden mir nun Fehler angezeigt:

Fatal error: Cannot redeclare imagettfbbox()

hier der Code dazu:

PHP:
function imagettfbbox($size, $angle, $font, $text) {
	$box   = imagettfbbox($size, $angle, $font, $text);
	$min_x = min(array($box[0], $box[2], $box[4], $box[6]));
	$max_x = max(array($box[0], $box[2], $box[4], $box[6]));
	$min_y = min(array($box[1], $box[3], $box[5], $box[7]));
	$max_y = max(array($box[1], $box[3], $box[5], $box[7]));
	return array(
		'left' => ($min_x >= -1) ? -abs($min_x + 1) : abs($min_x + 2),
		'top' => abs($min_y) - 1,
		'width' => $max_x - $min_x,
		'height' => $max_y - $min_y - 1,
		'box' => $box,
	);
}

// settings
$font = 'picture/buttin.ttf';
$text = 'Test Text';
$size = 50;
$border = 10;
// image
$box = imagettfbox($size, 0, $font, $text);
$x = $box['left'] + $border;
$y = $box['top'] + $border;
#header("Content-type: picture/buttin.ttf");
$width = $box['width']+200;
$height = $box['height']+50;
$im = imagecreate($width, $height);
// colors
$black = imagecolorallocate($im, 0, 0, 0);
$red = imagecolorallocate($im, 255, 0, 0);
$blue = imagecolorallocate($im, 0, 0, 255);
// display text



ich hoffe, das man mir helfen kann :)
 
Du kannst die Funktion natürlich nicht erneut deklarieren!

Benenne sie einfach um:
PHP:
function my_imagettfbbox($size, $angle, $font, $text) { 
    $box   = imagettfbbox($size, $angle, $font, $text); 
    $min_x = min(array($box[0], $box[2], $box[4], $box[6])); 
    $max_x = max(array($box[0], $box[2], $box[4], $box[6])); 
    $min_y = min(array($box[1], $box[3], $box[5], $box[7])); 
    $max_y = max(array($box[1], $box[3], $box[5], $box[7])); 
    return array( 
        'left' => ($min_x >= -1) ? -abs($min_x + 1) : abs($min_x + 2), 
        'top' => abs($min_y) - 1, 
        'width' => $max_x - $min_x, 
        'height' => $max_y - $min_y - 1, 
        'box' => $box, 
    ); 
} 

// settings 
$font = 'picture/buttin.ttf'; 
$text = 'Test Text'; 
$size = 50; 
$border = 10; 
// image 
$box = my_imagettfbox($size, 0, $font, $text); 
$x = $box['left'] + $border; 
$y = $box['top'] + $border; 
#header("Content-type: picture/buttin.ttf"); 
$width = $box['width']+200; 
$height = $box['height']+50; 
$im = imagecreate($width, $height); 
// colors 
$black = imagecolorallocate($im, 0, 0, 0); 
$red = imagecolorallocate($im, 255, 0, 0); 
$blue = imagecolorallocate($im, 0, 0, 255); 
// display text
 
erst einmal danke für die Antwort. ich habe es gleich ausprobiert, jedoch wird mir dann ein weiterer Fehler ausgegeben:

Fatal error: Call to undefined function my_imagettfbox()...
 
Zuletzt bearbeitet:
Weil ComFreak ein Flüchtigkeitsfehler gemacht hat (sowas passiert schnell bei ungetestetem Code - das kenn cih zu genüge *grumbel*).
Codebeispiele sind meistens nicht getestet. Aber die Fehlermeldung sagt eigentlich bereits wo der Fehler liegt.
Natürlich sollte der Funktionsaufruf gleich heissen wie die Funktion. my_imagettfbbox($size, 0, $font, $text) und nicht my_imagettfbox($size, 0, $font, $text)
 
ah ok, das werde ich mir merken.

Ich habe es aber nun etwas anders gelöst...

PHP:
function button($text, $size, $angle, $font) { 
    $box   = imagettfbbox($size, $angle, $font, $text); 
    $min_x = min(array($box[0], $box[2], $box[4], $box[6])); 
    $max_x = max(array($box[0], $box[2], $box[4], $box[6])); 
    $min_y = min(array($box[1], $box[3], $box[5], $box[7])); 
    $max_y = max(array($box[1], $box[3], $box[5], $box[7])); 
    return array( 
        'left' => ($min_x >= -1) ? -abs($min_x + 1) : abs($min_x + 2), 
        'top' => abs($min_y) - 1, 
        'width' => $max_x - $min_x, 
        'height' => $max_y - $min_y - 1, 
        'box' => $box, 
	    ); 
} 
// settings 
$font = 'picture/button.ttf'; 
$text = 'Test Text'; 
$size = 50; 
$border = 10;
$angle = '25';
// image 
$box = imagettfbbox($text, $size, $angle, $font); 
$x = $box['left'] + $border; 
$y = $box['top'] + $border; 
#header("Content-type: picture/buttin.ttf"); 
$width = $box['width']+200; 
$height = $box['height']+50; 
$im = imagecreate($width, $height); 
// colors 
$black = imagecolorallocate($im, 0, 0, 0); 
$red = imagecolorallocate($im, 255, 0, 0); 
$blue = imagecolorallocate($im, 0, 0, 255);

und später rufe ich die function dann auf...

Nun habe ich alle Flüchtigkeitsfehler beseitigt und nur einer ist noch da:

Warning: imagettfbbox() [function.imagettfbbox]: Could not read font in

Wenn ich das richtig verstanden habe, müsste das doch heißen, das er das gewünschte Bild nicht findet oder!?

und mir wird das angezeigt:
Warning: imagettfbbox() expects parameter 1 to be double, string given in

********
 
Zuletzt bearbeitet:
Gib mal den Sercer-Pfad an-
Mit $_SERVER['DOCUMENT_ROOT'] kannst du den Serverpfad des Root-Verzeichnisses auslesen.

PHP:
$font = "{$_SERVER['DOCUMENT_ROOT']}/myproject/picture/button.ttf";

Nachtrag: Der 2te Fehler:
Schau dir mal die Definition der box an
PHP:
//Die Definition
//array imagettfbbox ( int $size , int $angle , string $fontfile , string $text )

//und wie du sie anwendest
$box = imagettfbbox($text, $size, $angle, $font);
 
mal eine doofe frage, muss es eine ttf Datei sein?
ich hab jetzt erst gesehen das es ein ganz anderes Format ist...das würde somit auch den Fehler erklären :confused:...

Wenn ich das aber so ab ändere bekomme ich wieder einen Fehler:

Parse error: syntax error, unexpected T_VARIABLE in...

PHP:
function button($text,$size,$angle,$font) { 
    $box   = imagettfbbox ( int $size , int $angle , string $fontfile , string $text );
    $min_x = min(array($box[0], $box[2], $box[4], $box[6])); 
    $max_x = max(array($box[0], $box[2], $box[4], $box[6])); 
    $min_y = min(array($box[1], $box[3], $box[5], $box[7])); 
    $max_y = max(array($box[1], $box[3], $box[5], $box[7])); 
    return array( 
        'left' => ($min_x >= -1) ? -abs($min_x + 1) : abs($min_x + 2), 
        'top' => abs($min_y) - 1, 
        'width' => $max_x - $min_x, 
        'height' => $max_y - $min_y - 1, 
        'box' => $box, 
	    ); 
} ...
// image 
$box = imagettfbbox ( int $size , int $angle , string $fontfile , string $text ); 
$x = $box['left'] + $border; 
$y = $box['top'] + $border;
 
Jepp, es muss eine True-Type-Schrift sein.

Und zum Fehler. Hallo Big-A - Aufwachen.
Du musst doch nicht eine Definition als Aufruf verwenden. ich habe die Funktionsdefinition aus der PHP-Hilfe kopiert. Das ist sicher kein Aufruf.
Darum, wach auf und finde den Fehler selber. Notfalls hilft die PHP-Doku zum Thema imagettfbbox() weiter....
 
Zurück