PHP图像技术.docx
- 文档编号:5708617
- 上传时间:2022-12-31
- 格式:DOCX
- 页数:22
- 大小:797.89KB
PHP图像技术.docx
《PHP图像技术.docx》由会员分享,可在线阅读,更多相关《PHP图像技术.docx(22页珍藏版)》请在冰豆网上搜索。
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);
运行程序,结果如下图所示:
对比原图:
三、案例总结
缩略图在实际的开发中,会经常使用到,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PHP 图像 技术