PHP图像技术.docx

上传人:b****5 文档编号:5708617 上传时间:2022-12-31 格式:DOCX 页数:22 大小:797.89KB
下载 相关 举报
PHP图像技术.docx_第1页
第1页 / 共22页
PHP图像技术.docx_第2页
第2页 / 共22页
PHP图像技术.docx_第3页
第3页 / 共22页
PHP图像技术.docx_第4页
第4页 / 共22页
PHP图像技术.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

PHP图像技术.docx

《PHP图像技术.docx》由会员分享,可在线阅读,更多相关《PHP图像技术.docx(22页珍藏版)》请在冰豆网上搜索。

PHP图像技术.docx

PHP图像技术

第十二章补充案例

案例12-1图片格式

一、案例描述

1、考核知识点

图片格式

2、练习目标

Ø了解PHP支持哪些图片格式

Ø掌握查看PHP支持哪些图片格式的方法

3、需求分析

在PHP中,可以处理多种图片格式,那我们在平时实际开发中如何准确的获取PHP支持的图片格式呢,PHP提供了一个函数gd_info()来获取PHP支持的图片类型以及GD库的版本。

4、设计思路(实现原理)

1)打开php.ini,将;extension=php_gd2.dll前面的“;”去掉。

2)重启Apache。

3)使用var_dump输出gd_info()函数,查看PHP支持的图片类型以及GD库的版本。

二、案例实现

1、打开php.ini,修改相应的GD库扩展,修改如下:

2、重启Apache。

3、编写程序,代码如下:

php

//可以查看PHP支持的图片类型,GD库的版本

var_dump(gd_info());

运行程序,结果如下图所示:

三、案例总结

1、从上面的程序运行结果中,我们可以看到PHP支持多种图片格式,其中常用的格式有:

GIF、JPEG、PNG、WBMP、XBM.。

2、当我们要使用GD库的使用,一定要先打开php.ini中的相应的扩展,并且一定要重启Apache。

案例12-2创建画布的几种不同方式

一、案例描述

1、考核知识点

创建画布的几种不同方式

2、练习目标

Ø掌握创建画布的相关函数

Ø熟练使用相关函数创建画布

3、需求分析

GD函数在图形图像绘制方面非常强大,开发人员既可以在已有的图片上绘制,也可以在没有任何素材的基础上绘制。

正如绘画需要画纸一样,在没有任何素材基础上绘画时,首先要创建画布,所有的绘画都需要在画布上进行。

下面我们用PHP提供的GD函数创建画布:

imagecreate()、imagecreatefromgif()、imagecreatefromjpeg()、imagecreatefrompng()、imagecreatetruecolor()等。

4、设计思路(实现原理)

1)设置图片的输出类型,使用imagecreate()函数创建一个200*100的画布,使用输出图像函数输出创建好的画布。

2)设置图片的输出类型,使用imagecreatefromgif()函数创建一个画布,使用输出图像函数输出创建好的画布。

3)设置图片的输出类型,使用imagecreatefromjpeg()函数创建一个画布,使用输出图像函数输出创建好的画布。

4)设置图片的输出类型,使用imagecreatefrompng()函数创建一个画布,使用输出图像函数输出创建好的画布。

5)设置图片的输出类型,使用imagecreatetruecolor()函数创建一个画布,使用输出图像函数输出创建好的画布。

6)对比一下各种创建画布的不同方法的区别。

二、案例实现

1、使用imagecreate()函数创建一个200*100的画布,代码如下:

php

header("Content-type:

image/gif");

//1.使用imagecreate()函数创建一个200*100的画布

$img=imagecreate(200,100);

imagegif($img);

运行程序,结果如下图所示:

2、使用imagecreatefromgif()函数创建一个画布,代码如下:

php

header("Content-type:

image/gif");

//2.使用imagecreatefromgif()函数创建一个画布

$image="./img/01.gif";

$im=imagecreatefromgif($image);

imagegif($im);

运行程序,结果如下图所示:

3、使用imagecreatefromjpeg()函数创建一个画布,代码如下:

php

header("Content-type:

image/jpeg");

//3.使用imagecreatefromjpeg()函数创建一个画布

$image="./img/01.jpeg";

$im=imagecreatefromjpeg($image);

imagejpeg($im);

运行程序,结果如下图所示:

4、使用imagecreatefrompng()函数创建一个画布,代码如下:

php

header("Content-type:

image/png");

//4.使用imagecreatefrompng()函数创建一个画布

$image="./img/01.png";

$im=imagecreatefrompng($image);

imagepng($im);

运行程序,结果如下图所示:

5、使用imagecreatetruecolor()函数创建一个画布,代码如下:

php

header("Content-type:

image/png");

//5.使用imagecreatetruecolor()函数创建一个画布

$im=@imagecreatetruecolor(50,100);

imagegif($im);

运行程序,结果如下图所示:

三、案例总结

1、PHP可以有多种创建画布的方式:

可以通过一个已有的文件或URL创建这种类型的画布,也可以新创建一个画布(基于调色板的或是真色彩的)。

2、使用哪种方式创建画布要依据要依据真实的需求而定。

案例12-3填充颜色

一、案例描述

1、考核知识点

填充颜色

2、练习目标

Ø熟练掌握画布的颜色填充的方法

3、需求分析

正是因为有了颜色,这个世界才变得缤纷多彩,在绘制图形的时候,同样也离不开颜色的设置。

PHP提供了imagecolorallocate()函数设置颜色,那么来看看使用调色板、真色彩以及给定的文件或URL填充颜色有什么不同,这里只测试imagecreate,imagecreatetruecolor和imagecreatefromgif创建画布的填充色。

4、设计思路(实现原理)

1)使用imagecreate()函数创建完画布,再使用imagecolorallocate()函数给画布填充颜色,输出图像。

2)使用imagecreatetruecolor()函数创建完画布,再使用imagecolorallocate()函数给画布填充颜色,并赋值给一个变量,在使用imagefill区域填充函数给画布填充颜色,输出图像。

3)使用imagecreatefromgif()函数创建画布填充颜色,方法同2)。

4)对比以上几种填充画布的方式。

二、案例实现

1、使用调色板方式创建画布填充颜色,代码如下:

php

//1.使用调色板方式创建画布填充颜色

$img=imagecreate(200,100);

imagecolorallocate($img,100,110,204);

imagegif($img);

运行程序,结果如下图所示:

2、真色彩画布填充颜色,要使用imageFill()函数,代码如下:

php

//2.真色彩画布填充颜色,要使用imageFill()函数

$im=imagecreatetruecolor(50,100);

$color=imagecolorallocate($im,105,199,204);

imageFill($im,0,0,$color);

imagepng($im);

运行程序,结果如下图所示:

3、使用imagecreatefromgif()函数创建画布,要使用imageFill()函数,代码如下:

php

//3.使用imagecreatefromgif()函数创建画布,要使用imageFill()函数

$image="./img/01.gif";

$im=imagecreatefromgif($image);

$color=imagecolorallocate($im,100,110,110);

imageFill($im,0,0,$color);

imagegif($im);

运行程序,结果如下图所示:

 

三、案例总结

1、在PHP中,除了使用调色板创建的画布不适用区域填充函数imagefill外,其他方式皆需要。

2、imagecreatefromjpeg()和imagecreatefrompng()方式创建的画布填充颜色没有演示,大家可以仿照imagecreatefromgif()的方式自行验证。

案例12-4填充带透明度的颜色

一、案例描述

1、考核知识点

填充带透明度的颜色

2、练习目标

Ø掌握给画布填充带透明度的颜色

3、需求分析

在实际的开发中,我们创建的图像的背景颜色想要有一定的透明度,那么就需要使用PHP提供的imagecolorallocatealpha()函数给图像添加带透明度的颜色。

现在举例说明:

我们创建三个不同颜色的圆,使他们有部分交迭,仔细观察交叠部分颜色透明度的情况。

4、设计思路(实现原理)

1)使用创建真彩色图像的函数创建一个画布$image。

2)用白色背景加黑色边框画个方框。

3)使用函数imagecolorallocatealpha()给$image分配三个不同的颜色,并且把透明度设置为75。

4)使用函数imagefilledellipse画三个交迭的圆。

5)最后将结果输出。

二、案例实现

1、编写程序,代码如下:

php

$size=300;

$image=imagecreatetruecolor($size,$size);

//用白色背景加黑色边框画个方框

$back=imagecolorallocate($image,255,255,255);

$border=imagecolorallocate($image,0,0,0);

imagefilledrectangle($image,0,0,$size-1,$size-1,$back);

imagerectangle($image,0,0,$size-1,$size-1,$border);

$yellow_x=100;

$yellow_y=75;

$red_x=120;

$red_y=165;

$blue_x=187;

$blue_y=125;

$radius=150;

//用alpha值分配一些颜色

$yellow=imagecolorallocatealpha($image,255,255,0,75);

$red=imagecolorallocatealpha($image,255,0,0,75);

$blue=imagecolorallocatealpha($image,0,0,255,75);

//画三个交迭的圆

imagefilledellipse($image,$yellow_x,$yellow_y,$radius,$radius,$yellow);

imagefilledellipse($image,$red_x,$red_y,$radius,$radius,$red);

imagefilledellipse($image,$blue_x,$blue_y,$radius,$radius,$blue);

//不要忘记输出正确的header!

header('Content-type:

image/png');

//最后输出结果

imagepng($image);

imagedestroy($image);

运行程序,结果如下图所示:

三、案例总结

1、imagecolorallocatealpha()函数的透明度的取值范围是:

0—127,0代表完全不透明,127代表完全透明。

案例12-5图像的输出

一、案例描述

1、考核知识点

图像的输出

2、练习目标

Ø掌握创建的几种不同的图像的输出方式

3、需求分析

PHP作为一种Web语言,无论是解析出的HTML代码还是二进制的图片最终都要通过浏览器显示。

GD库提供了一系列用于输出gif、jpg、png和bmp格式图片的函数,imagegif()、imagejpeg()、imagepng()、imagewbmp()。

现在举例说明:

创建一个图像,将其输出到一个名字为mypng的文件中。

4、设计思路(实现原理)

1)使用真彩色方式创建一个300*200的画布。

2)为这个画布填充颜色。

3)设置imagepng()函数的第二个参数,将此图像输出到mypng中,并查看。

二、案例实现

1、编写img.php,代码如下:

php

//真色彩画布填充颜色,要使用imageFill()函数

$im=imagecreatetruecolor(300,200);

$color=imagecolorallocate($im,0,0,255);

imageFill($im,0,0,$color);

imagepng($im,"mypng");

运行程序,在img.php所在的目录中,找到mypng文件,并用图片查看器打开,结果如下图所示:

三、案例总结

在PHP中,我们可以通过指定图像输出函数的第二个参数,使创建的图像输出到指定的文件名中。

案例12-6绘制一个表格

一、案例描述

1、考核知识点

绘制一个表格

2、练习目标

Ø熟练掌握绘制基本形状的图像的函数的使用

3、需求分析

在绘制图像时,无论多么复杂的图形都离不开一些基本图形,比如,点、直线、矩形、圆等。

只有掌握了这些最基本图形的绘制方式,才能绘制出各种独特风格的图形。

在GD函数库中,提供了许多绘制基本图形的函数:

imagesetpixel()、imageline()、imagerectangle()、imageellipse()。

现在举例假设:

现在使用imagerectangle()绘制我们想要的白底黑线的表格。

4、设计思路(实现原理)

1)设置每个小单元格的长和宽,同时设置此表格的行数和列数。

2)使用真彩色函数创建一个画布,设置表格底部颜色为白色,表格线为黑色。

3)使用for循环设置表格的竖线。

4)使用for循环设置表格的横线。

5)输出此图像。

二、案例实现

1、编写程序,代码如下

php

$rows=5;

$cols=11;

$eachx=12;

$eachy=18;

$max=array($cols*$eachx,$rows*$eachy);

$im=imagecreatetruecolor($max[0]+1,$max[1]+1);

$white=imagecolorallocate($im,255,255,255);

imagefill($im,0,0,$white);

$black=imagecolorallocate($im,50,50,50);

for($x=$max[0]/2;$x>=0;$x-=$eachx){

imagerectangle($im,($max[0]/2)+$x,0,($max[0]/2)-$x,$max[1],$black);

}

/*for($y=$max[1]/2;$y>=0;$y-=$eachy){

imagerectangle($im,0,($max[1]/2)+$y,$max[0],($max[1]/2)-$y,$black);

}*/

header("Content-type:

image/jpeg");

imagejpeg($im,'',80);

imagedestroy($im);

运行程序,结果如下图所示:

三、案例总结

我们可以根据PHP提供的函数创建我们想要的基本图形。

案例12-7绘制圣诞雪花图

一、案例描述

1、考核知识点

绘制圣诞雪花图

2、练习目标

Ø熟练掌握绘制文本的函数的使用

3、需求分析

在GD函数库中,不仅提供了绘制基本图形的函数,还提供了绘制文本的函数,imagechar()、imagecharup()\imagestring()、imagestringup(),这些函数不仅可以将文本绘制到画布上,还可以将特殊字符当作文本绘制到画布上,下面我们就绘制圣诞雪花图(使用imagechar()函数将“*”当作文本绘制到画布上,形成圣诞雪花图)。

4、设计思路(实现原理)

1)设置画布的宽和高,并绘制画布,同时给画布填充白色的背景。

2)生成雪花(使用imagechar()函数将*当做文本随机的会知道画布上)。

3)将圣诞雪花图输出后并销毁。

二、案例实现

1、编写程序,代码如下:

php

//设置画布的宽和高

$imgWidth=300;

$imgHeight=200;

//绘制画布

$img=imagecreate($imgWidth,$imgHeight);

//设置底色

imagecolorallocate($img,255,255,255);

$snowflake_size=5;//可从1到5

//生成雪花其实就是调用imagechar()输出*号

for($i=1;$i<=400;$i++)

//使用imagechar()函数将*当做文本随机输出到画布上,颜色也是随机分配

imagechar($img,$snowflake_size,mt_rand(0,$imgWidth),mt_rand(0,

$imgHeight),"*",imagecolorallocate($img,mt_rand(200,255),mt_rand(200,255),

mt_rand(200,255)));

header("Content-type:

image/gif");

imagegif($img);

imagedestroy($img);

运行程序,结果如下图所示:

三、案例总结

在PHP中,我们可以根据实际的需求,我们不仅可以讲文字绘制到画布上,还可以将一些字符当做文本绘制到画布上,从而得到我们想要的效果。

案例12-8图像过滤器的妙用

一、案例描述

1、考核知识点

图像过滤器的妙用

2、练习目标

Ø熟练使用imagefilter()函数对图像进行过滤

3、需求分析

PHP不仅可以绘制图像、绘制文本,还可以对生成的图像做一些特效,如:

反色、浮雕、模糊、柔滑图像等效果。

现在举例假设:

依据一个已有的图像,再新建一个一样的图像,对其做底片色的特效。

4、设计思路(实现原理)

1)使用imagecreatefrompng()这个函数,依据一个已有的图像新建一个图像。

2)使用过滤器imagefilter()函数,设置第二个参数为IMG_FILTER_NEGATE,将此图像做成底片色的特效。

3)输出此图像,并与原图对比。

二、案例实现

1、编写函数implode_key,代码如下:

php

//依据一个已有图像创建一个新图像

$img=imagecreatefrompng("D:

\\php0421\\apache2.2\\htdocs\\img\\02.png");

//对此图像使用过滤器,使图像中所有颜色反转

imagefilter($img,IMG_FILTER_NEGATE);

header("Content-type:

image/png");

imagepng($img);

imagedestroy($img);

运行程序,结果如下图所示:

对比原图:

三、案例总结

利用好PHP提供的imagefilter()函数,可以实现我们想要的特效,大家可以依据上述案例将图像浮雕化、模糊化等。

案例12-9缩略图

一、案例描述

1、考核知识点

缩略图

2、练习目标

Ø了解getimagesize()函数获取图像大小的用法

Ø熟练使用imagecreatetruecolor()函数创建一个真彩色图像

Ø熟练使用imagecreatefromjpeg()函数从JPEG文件或URL新建一图像

Ø数量掌握imagecopyresized()函数拷贝部分图像并调整大小

3、需求分析

在网站的实际开发过程中,会经常需要将上传的图片的缩略图来显示部分内容。

假设有一个已有的原图的路径,以及缩略的比例,来生成一个相应缩放尺寸的缩略图。

4、设计思路(实现原理)

1)设置文件及缩放尺寸,同时使用getimagesize()获取原图图像大小。

2)依据缩放尺寸计算缩略图的尺寸大小,并根据缩放的尺寸使用ImageCreateTrueColor()绘制缩略图的画布。

3)使用imagecreatefromjpeg()创建一个与原图一样的新的图像$source,并根据它使用imagecopyresized()函数创建缩略图。

4)输出绘制的缩略图,并与原图进行对比。

二、案例实现

1、编写伪代码,代码如下:

php

header('Content-type:

image/jpeg');

//设置文件及缩放尺寸

$imgfile="D:

\\php0421\\apache2.2\\htdocs\\img\\01.jpeg";

$percent=0.5;

//获取原图图像大小

list($width,$height)=getimagesize($imgfile);

//依据缩放尺寸计算缩略图的尺寸大小

$newwidth=$width*$percent;

$newheight=$height*$percent;

//绘制缩略图的画布

$thumb=ImageCreateTrueColor($newwidth,$newheight);

//依据原图创建一个与原图一样的新的图像

$source=imagecreatefromjpeg($imgfile);

//依据原图创建缩略图

/**

*@param$thumb目标图像

*@param$source原图像

*@param0,0,0,0分别代表目标点的x坐标和y坐标,源点的x坐标和y坐标

*@param$newwidth目标图像的宽

*@param$newheight目标图像的高

*@param$width原图像的宽

*@param$height原图像的高

*/

imagecopyresized($thumb,$source,0,0,0,0,$newwidth,$newheight,$width,$height);

//输出生成的缩略图

imagejpeg($thumb);

运行程序,结果如下图所示:

对比原图:

三、案例总结

缩略图在实际的开发中,会经常使用到,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1