700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 【精选】用 PHP 实现图形图像的处理

【精选】用 PHP 实现图形图像的处理

时间:2023-03-31 14:59:16

相关推荐

【精选】用 PHP 实现图形图像的处理

一、在 PHP 中加载 GD 库

GD 库是一个开放的、动态创建图像的、源代码公开的函数库,可以从官网下载。目前,GD 库支持 GIF、PNG、JPEG、WBMP 和 XBM 等多种图像格式,用于对图像的处理。

GD 库在 PHP5 是默认安装的,但要激活 GD 库,必需设置 php.ini 文件。即将该文件中的“;extension=php_gd2.dll”选项前的分号“;”删除。保存修改后的文件并重启 Apache 服务器即可。

在成功加载 GD2 函数库后,可以通过 phpinfo() 函数来获取 GD2 函数库的安装信息,验证 GD 库是否安装成功。在浏览器中输入**“域名/phpinfo.php”**并按 Enter 键,在打开的页面中如果检索到下图中的 GD 库的安装信息,说明 GD 库安装成功。

phpinfo.php文件代码:

<?phpecho phpinfo();

二、图形图像的典型应用

1、创建一个简单的图像

使用 GD2 函数可以实现对各种图形图像的处理。创建画布是使用 GD2 函数库来创建图像的第一步,无论创建什么样的图像,首先都需要创建一个画布,其他操作都将在这个画布上完成。在 GD2 函数库中创建画布,可以通过 imagecreate() 函数实现。

【例1】使用 imagecreate()函数创建一个宽200像素、高60像素的画布,并且设置画布背景颜色RGB值为(225,66,159),最后输出一个 gif 格式的图像。代码如下:

<?php$img = imagecreate(200, 60); // 创建一个画布$white = imagecolorallocate($img, 225, 66, 159); // 设置画布的背景颜色header("content-type:image/gif"); // 定义输出图像类型imagegif($img); // 输出图像?>

2、使用 GD2 函数在照片上添加文字

PHP 中的 GD 库支持中文,但必须要以 UTF-8 编码格式来进行传递。如果使用 imageString()函数直接绘制中文字符就会出现乱码。这是因为 GD2 对中文只能接受 UTF-8 编码格式,并且默认使用英文字体。所以要输出中文字符串,必须对中文字符串进行转码,并设置中文字符串使用的字体,否则,输出的只能是乱码。

【例2】使用 imagettftext()函数将文字“万里长城”以 TTF 字体输出到图像中。

具体开发步骤:

(1)header()函数定义输出图像类型。

(2)imagecreatefromjpeg()函数载入照片。

(3)imagecolorallocate()函数设置输出字体颜色。

(4)定义输出的中文字符串所使用的字体(字体选用支持中文的字体格式)。

(5)imagettftext()函数向照片中添加文字。

(6)创建图像,然后释放资源。

代码如下:

<?phpheader("content-type:image/gif");$img = imagecreatefromjpeg('timg.jpg');$textcolor = imagecolorallocate($img, 56, 73, 136);$font = 'C:/Windows/Fonts/STFANGSO.TTF';$text = '万里长城';imagettftext($img, 80, 0, 100, 100, $textcolor, $font, $text);imagejpeg($img); // 建立 JPEG 图形imagedestroy($img); // 释放资源/*上面代码中,imagettftext()函数输出文字到照片上。其中,$img是指照片,80是字体的大小,0是文字的水平方向,100、100是文字的坐标值。$textcolor 是文字的颜色,$font 是字体,$text 是照片文字。*/

照片原图:

添加文字后的照片:

3、生成验证码

验证码的实现方法很多,有数字验证码、图形验证码和文字验证码等。本次介绍一种使用图像技术成长的验证码。

【例3】使用 GD2 函数创建一个 4 位的验证码,并且将生成的验证码保存在 session 变量中。代码如下:

<?phpsession_start();header("content-type:image/png");$new_number = '';$image_width = 200; // 设置图像宽$image_height = 40; // 设置图像高srand(microtime()*100000); // 设置随机数的种子for($i=0;$i<4;$i++){// 循环输出一个4位随机数$new_number .= dechex(rand(0,5));}$_SESSION['check_num'] = $new_number;// var_dump($_SESSION['check_num']);exit;$num_img = imagecreate($image_width, $image_height);imagecolorallocate($num_img, 255, 255, 255);for($i=0;$i<strlen($_SESSION['check_num']);$i++){$font = mt_rand(20,25);$x = mt_rand(1,8)+$image_width*$i/4;$y = mt_rand(1,$image_height/4);$color = imagecolorallocate($num_img, mt_rand(0,100), mt_rand(0,150), mt_rand(0,200)); // 设置字符颜色imagestring($num_img, $font, $x, $y, $_SESSION['check_num'][$i], $color);}imagepng($num_img);imagedestroy($num_img);

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。