【问题标题】:Create White Box around Text GD-Lib在文本 GD-Lib 周围创建白框
【发布时间】:2011-11-18 10:32:13
【问题描述】:

我想在我通过 GD-Lib 添加到图像的一些文本周围添加一个白框。 但我不知道如何做到最好。

这是我当前的代码:

    <?php
    $textImg = imagecreatefromjpeg($tempImage);
    $black = imagecolorallocate($textImg, 0, 0, 0);

    $font = 'lib/verdana.ttf';

    // Add the text
    imagettftext($textImg, 20, 0, imagesx($textImg)*$textData['x']/100, imagesy($textImg)*$textData['y']/100, $black, $font, $textData['text']);

    imagejpeg($textImg,$tempImage,$jpegQuality);
    ?>

希望你能帮帮我。

【问题讨论】:

    标签: php text background gd


    【解决方案1】:

    您可以使用imagettfbbox() 通过传递与文本本身相同的设置(相同的文本、字体和大小等)来获取边界框的坐标。

    获得这些坐标后,您可以使用imagerectangle() 在文本周围绘制边框,或者您可以使用imagefilledrectangle() 绘制一个实心矩形。请务必在使用 imagettftext() 渲染文本之前调用它

    下面是一个基本示例,但需要进行一些调整,因为其中大部分来自内存,我怀疑 $x$y 计算可以做得更好,因为它可能不适用于不同的画布尺寸现在。但是,它证明了原理。

    // Set the content-type
    header('Content-Type: image/png');
    
    // Create the image
    $im = imagecreatetruecolor(400, 30);
    
    // Create some colors
    $white = imagecolorallocate($im, 255, 255, 255);
    $black = imagecolorallocate($im, 0, 0, 0);
    imagefilledrectangle($im, 0, 0, 399, 29, $black);
    
    // The text to draw
    $text = 'Testing';
    // Replace path by your own font path
    $font = 'verdana.ttf';
    
    // Add the text
    
    $bbox = imagettfbbox(20, 0, $font, $text);
    
    $x = $bbox[1] + (imagesx($im) / 2) - ($bbox[4]);
    $y = $bbox[3] + (imagesy($im) / 2) - ($bbox[5]);
    
    imagerectangle($im, 0, 0, $x, $y, $white);
    imagettftext($im, 20, 0, 0, 20, $white, $font, $text);
    
    // Using imagepng() results in clearer text compared with imagejpeg()
    imagejpeg($im);
    imagedestroy($im);
    

    【讨论】:

      猜你喜欢
      • 2011-12-28
      • 1970-01-01
      • 2011-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-21
      • 2018-07-18
      • 1970-01-01
      相关资源
      最近更新 更多