kano个人博客讲解php图像处理(一)

kano个人技术博客 php教程 556 次浏览 没有评论

用户上传的图片,通常都不会原封不动的存到服务器中,而是会对其进行一些识别处理:有的图片太大,我们要对它进行裁剪、剪切;有的需要保护用户发布内容的原创性,所以我们要为其打上水印;有的还需要在上面写上注解文字等等。这些需求都可以通过php的GD库来实现。

php图像处理

一、php图像GD库配置

GD库是php的图像处理函数,是一个php扩展,使用的话需要在php.ini中打开它:

extension=php_gd2.dll

然后重启服务器,如果在phpinfo中看到如下信息,则代表GD库开启成功了:

phpinfo

或者使用gd_info()函数查看GD库的信息:

gd_info()

可以看到GD库的版本以及对各种图像类型支持的情况。

 

二、php图像处理

然后我们就可以它来做各种图像的处理工作了,kano之后将用下面这一副小小的风景画作为例子来为大家介绍。

php图像

(图片路径“./temp/hua.jpg”)

1. 获取图像大小

$size = getimagesize('./temp/hua.jpg');
print_r($size);

获取图像大小

使用getimagesize方法可以获取图像大小,使用方法也非常简单,如上面的代码所示,参数即为图片的路径。可以看到获得的信息除了宽高还有一些别的内容,下面来详细解释一下:

索引0:图像宽度的像素值

索引1:图片高度的像素值

索引2:图片类型(1 = GIF,2 = JPG,3 =PNG,4 = SWF,5 = PSD,6 = BMP,7 = TIFF(intel byte order),8 =TIFF(motorola byte order),9 = JPC,10 = JP2,11 = JPX,12 =JB2,13 = SWC,14 = IFF,15 = WBMP,16 = XBM)

索引3:可以直接用在<img>标签中的宽高

bits:颜色的位数

channels:通道,RGB图像为3,CMYK图像为4

mime:图像的MIME类型

 

还有一个getimagesizefromstring函数,作用与getimagesize相同,不过参数是图像的字符串表达,而不是文件名:

$img_str = file_get_contents('./temp/hua.jpg');
$size = getimagesizefromstring($img_str);
print_r($size);

个人博客php图像处理

不过效果与getimagesize是相同的。

2. 创建图像对象

图像的操作很多都需要先根据文件创建出一个文件对象来。

$img = imagecreatefromjpeg('./temp/hua.jpg');

这里我们的图像是jpeg图像,所以使用了imagecreatefromjpeg,对于不同类型的图像,GD给出了一系列的“imagecreatefrom<xxx>”函数(imagecreatefrombmp, imagecreatefromgd, imagecreatefrompng, imagecreatefromwebp, imagecreatefromgif等等)。

 

3. 在图像上写入文本

$img = imagecreatefromjpeg('./temp/hua.jpg');
$word_color = imagecolorallocate($img, 255, 255, 255);
imagefttext($img, 12, 0, 25, 25, $word_color, './temp/PingFang-Regular.ttf', '啊啊啊');
imagejpeg($img, './temp/hua2.jpg');

图像写入文本

可以看到文字“啊啊啊”写到了图片中,用到了几个我们上面没有见到过的函数:

imagecolorallocate:创建一个颜色,这对于写入文字这种操作来说是必须的,第一个参数是我们要操作的图片资源,后面3个参数则是我们经常会用到的RGB值。

imagefttext:将文字写入图片,因为参数较多,还请大家自行查阅手册,这里就不一一说明了。有两点需要注意,参数2是文字的size,单位是点(point),这意味着12实际上是16px的文字;第5个参数是文字在图片中的y值——但并非文字的上边距离图片顶部的距离,而是基线(baseline)距离顶部的距离。

imagejpeg:根据图片资源输出一副图片,如果未设置第二个参数则会直接输出图像资源流,设置了的话则会以此文件名生成一个图像文件,注意图像如果已存在则会被覆盖掉。

本篇kano个人博客介绍了php中使用GD库进行基本的图像操作,下一篇还会继续介绍更多的图像操作方法,希望大家届时继续收看。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Go