2016-10-08 4 views
0

Я хотел бы поставить на картинке в вертикальном тексте в PHP:PHP Г.Д. вертикальный текст изображение

function scrivi($scrivi, $p) { 
    $imgResource = imagecreatefromjpeg($p); 
    $textcolor = imagecolorallocate($imgResource, 255, 255, 255); 
    $fontPath = "st.ttf"; 
    $fontSize = "18"; 
    $rotation = "270"; // counter-clockwise rotation 
    $text = "this is a text"; 
    $textCoords = imagettfbbox($fontSize, $rotation, $fontPath, $text); 
    $x = 36; 
    $y = 36; 
    imagettftext($imgResource, $fontSize, $rotation, $x, $y, $textcolor, $fontPath, $text); 
    unlink($p); 
    imagejpeg($imgResource, $p, 100); 
    imagedestroy($imgResource); 
} 

Это хорошо работает только то, что я хотел бы, чтобы буквы повернуты это пример использования функции

enter image description here

Вместо этого я хотел бы

enter image description here

идея может быть, чтобы обернуть каждую букву

ответ

0

Все, что вам действительно нужно сделать, это разделить текст в массив, цикл его, а затем компенсировать y по высоте + водительство шрифта характера:

function scrivi($p,$text) 
    { 
     $imgResource = imagecreatefromjpeg($p); 
     $textcolor  = imagecolorallocate($imgResource, 255,255, 255); 
     $fontPath  = __DIR__."/st.ttf"; 
     $fontSize  = "18"; 
     $x = 36 ; 
     $y = 36; 
     foreach(str_split($text) as $char) { 
      $textCoords = imagettfbbox($fontSize, 0, $fontPath, $char); 
      imagettftext($imgResource, $fontSize, 0, $x, $y, $textcolor,$fontPath,$char); 
      $y += 24; 
     } 
     unlink($p); 
     imagejpeg($imgResource,$p,100); 
     imagedestroy($imgResource); 
    } 

scrivi('http://imgtops.sourceforge.net/bakeoff/bw.jpg',"Cats are great"); 

дает вам:

enter image description here

(кредит изображения: http://imgtops.sourceforge.net/bakeoff/)

+0

пришли к решению, аналогичному вашему, но теперь у меня проблема, вы можете центрировать буквы, как я вижу, например, не в центре http://imgur.com/a/YVVTR – effeee

+0

Да, дайте мне вторую чтобы понять это. Мне просто нужно проверить скрипт. – Rasclatt

+0

Я должен скоро отправиться в путь, но для этого вам нужно будет получить ширину самого большого символа (сделайте цикл до того, который там есть). Затем вам нужно измерить текущий символ в цикле укладки, а разница между наибольшим символом и текущим символом, разделенным на 2, - это значение, которое вы отступали слева. Это должно сосредоточить характер (ы). – Rasclatt