【问题标题】:Phalcon\Image\Adapter\Gd throwing an exception for the text functionPhalcon\Image\Adapter\Gd 为文本函数抛出异常
【发布时间】:2020-10-26 17:18:16
【问题描述】:

我的代码中有以下内容:

use Phalcon\Image\Adapter\GD as Image;
...
    $imagePath = BASE_DIR . '/public/img/map-icons/' . $client->getId() . '/' . $file;
    $image = new Image($imagePath);
...
    $fontFile = $this->getFontPath();
    $image->text($text, $x, $y, 1, '#FFFFFF', $fontSize, $fontFile);

在 Phalcon 1.3.4 和 php 5.4.45 下它工作正常,但是当我将应用程序迁移到运行 Phalcon 版本 3.4.5 和 php 7.3.17 的新服务器时 $image->text($text, $x, $y, 1, '#FFFFFF', $fontSize, $fontFile); 给出以下错误:

Project staging.api.my-domain.com raised exception class Phalcon\lmage\Exception with message "Call to imagettfbboxO failed" at gd.zep, line 357

传递给$image->text(..) 的文字值如下:

$image->text(H, 9, 20, 1, '#FFFFFF', 11, '/var/www/vhosts/staging.api.mydomain.com/src/fonts/arialbd.ttf');

当我尝试此处https://www.php.net/manual/en/function.imagettfbbox.php 页面上给出的 PHP 的 imagettfbbox 示例时,该示例有效并在白框中显示对角线文本,所以我认为 imagettfbbox 没有问题。但是php手册中对imagettfbbox显示的参数如下:

imagettfbbox ( float $size , float $angle , string $fontfile , string $text )

但是对于 phalcon gd text() 他们是:

text (mixed $text, [mixed $offsetX], [mixed $offsetY], [mixed $opacity], [mixed $color], [mixed $size], [mixed $fontfile])

【问题讨论】:

    标签: php image phalcon


    【解决方案1】:

    您主机上的 gd 安装和/或字体文件一定有问题。

    在内部,text() 调用 PHP 的 imagettfbbox。如果您创建一个简单的 PHP 脚本,将使用此方法和您的参数,您可以获得更多关于正在发生的事情的信息

    【讨论】:

    • 感谢@NikolaosDimopoulos,我已经更新了我的问题以包含您建议的测试,并且 php imagettfbbox 似乎工作正常。
    【解决方案2】:

    这是 Phalcon 3.4.5 中的一个错误。见https://github.com/phalcon/cphalcon/issues/15188。它将被修复的最低版本是 4.1。

    【讨论】:

      【解决方案3】:

      我建议不要使用 Phalcon 的 GD 包装器。

      它会生成大尺寸的低质量图像,因为它使用 imagecopyresized 而不是 imagecopyresampled。

      我发现 Python/PILLOW 更易于使用并产生正确的结果。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-07-27
        • 1970-01-01
        • 2015-08-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多