使用imagettftext()函数执行失效的原因排查

登陆使用到验证码死活加载不出来,排查之后发现imagettftext函数执行失败。该函数作用是把文字写入图片当中,常用于做验证码图片。使用该函数需要安装GD库,但是安装之后依然不能使用,报以下错误:

PHP Fatal error: Call to undefined function imagettftext()

原因是由于安装GD库的时候没有安装freetype的支持。freetype不是一个独立的拓展,是依附在GD库上面的一个拓展而已。所以编译的时候要把freetype的支持也安装上。

由于我使用的环境是docker搭建的,故只贴出docker的安装代码

FROM php:fpm 
RUN apt-get update && apt-get install -y \
    libfreetype6-dev \
        libmcrypt-dev \
        libpng12-dev \
        libjpeg-dev \
        libpng-dev
    && docker-php-ext-install iconv mcrypt \
    && docker-php-ext-configure gd \
        --enable-gd-native-ttf \
        --with-freetype-dir=/usr/include/freetype2 \
        --with-png-dir=/usr/include \
        --with-jpeg-dir=/usr/include \
    && docker-php-ext-install gd \
    && docker-php-ext-install mbstring \
    && docker-php-ext-enable gd

重启下PHP。OK,完美解决。 

 

在PHP中,创建一个色彩丰富的GIF格式的图像,最好使用`imagegif`函数。该函数用于将GD图像保存为GIF格式,并输出到浏览器或文件中。 `imagegif`函数的语法如下: ```php bool imagegif ( resource $image [, mixed $to = NULL ] ) ``` 其中,`image`参数是一个GD图像资源,表示要保存的图像。`to`参数是可选的,用于指定要保存图像的文件名或文件句柄,如果省略该参数,则将图像输出到浏览器中。 下面是一个示例,演示如何使用`imagegif`函数创建一个色彩丰富的GIF格式的图像: ```php // 创建一个200x200的图像 $image = imagecreatetruecolor(200, 200); // 定义颜色 $red = imagecolorallocate($image, 255, 0, 0); $green = imagecolorallocate($image, 0, 255, 0); $blue = imagecolorallocate($image, 0, 0, 255); $yellow = imagecolorallocate($image, 255, 255, 0); $cyan = imagecolorallocate($image, 0, 255, 255); $magenta = imagecolorallocate($image, 255, 0, 255); // 填充背景色 imagefill($image, 0, 0, $cyan); // 绘制矩形 imagerectangle($image, 10, 10, 190, 190, $red); // 绘制圆形 imageellipse($image, 100, 100, 150, 150, $green); // 绘制线条 imageline($image, 50, 50, 150, 150, $blue); // 添加文本 $text = 'Hello, world!'; $font = 'arial.ttf'; $size = 20; $text_color = $yellow; imagettftext($image, $size, 0, 70, 170, $text_color, $font, $text); // 设置GIF格式 header('Content-type: image/gif'); // 保存图像 imagegif($image); // 释放内存 imagedestroy($image); ``` 上述代码使用`imagegif`函数将GD图像输出为GIF格式,并输出到浏览器中,形成一个色彩丰富的动态图像。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值