Sağ imagettftext ile bir görüntü (), PHP metin hizalamak

3 Cevap php

Benim kullanıcılar için dinamik forum imza görüntüleri kuruyorum ve ben resmin kendi adınızı koymak mümkün olmak istiyorum. Ben bu sadece iyi yapmak mümkün, ama adları farklı uzunluklarda ve ben sağ adı hizalamak istiyorum çünkü ben x & ayarlamak zorunda, bunu nasıl yapıyor hakkında gidebilirsiniz y koordinatları.

$im = imagecreatefromjpeg("/path/to/base/image.jpg");
$text = "Username";
$font = "Font.ttf";
$black = imagecolorallocate($im, 0, 0, 0);

imagettftext($im, 10, 0, 217, 15, $black, $font, $text);
imagejpeg($im, null, 90);

3 Cevap

Dize genişliğini almak ve daha sonra başlangıç ​​x-koordinatı almak için görüntünün genişliği o çıkarmak için imagettfbbox işlevini kullanın.

$dimensions = imagettfbbox($fontSize, $angle, $font, $text);
$textWidth = abs($dimensions[4] - $dimensions[0]);
$x = imagesx($im) - $textWidth;

Kullanarak kullanıcı adının boyutunu önceden hesaplamak imagettfbbox().

Eğer oradan genişliği, daha sonra metin başlamak gerekiyor hangi x konumunu düşebilirsiniz.

Bu ............... çalışacak

                  $s = split("[\n]+", $text);
                  $top=20;
                  $left=30;
                  $font_file="yourfont.ttf";
                  $fontsize=20;
               $__H=$top;
               foreach($s as $key=>$val){
                    $_b = imageTTFBbox($fontsize,0,$font_file,$val);
                    $_W = abs($_b[2]-$_b[0]); 
                    $_X = ($left+$text_box_width)-$_W;
                    $_H = abs($_b[5]-$_b[3]); 
                    $_H +=1;  
                    $__H += $_H;              
                    $res=imagettftext($image, $this->_fontsize, 0, $_X, $__H, $color, $font_file, $val);
                    $__H += 1;