php gd 垂直文本图像

php gd vertical text an image

我想在 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);
}

它工作得很好,只是我希望字母被转动这是一个使用函数的例子

相反,我想

一个想法可以是将每个字母包装起来

您真正需要做的就是将文本拆分成一个数组,将其循环,然后将 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");

给你:

(图片来源:http://imgtops.sourceforge.net/bakeoff/