PHP入门教程之图像处理技巧分析
本文实例讲述了PHP图像处理。分享给大家供大家参考,具体如下:
Demo1.php
<?php //一般生成的图像可以是png,jpg,gif,bmp //jpeg,wbmp //第一步,设置文件MIME类型,输出类型text/html类型是网页类型,默认可以不写 //将输出类型改成图像流 header('Content-Type:image/png;'); //第二步,创建一个图形区域,图像背景 //有两种创建方式,资源类型,一般要加上@符号,防止出错 //imagecreatetruecolor返回的是一个资源句柄 //这个函数创建了一个图像的区域,没有进行填充的时候,背景默认是黑色的 $im=imagecreatetruecolor(200,200); //第三步,有空白图像区域,绘制颜色,文字叫,线条啊。。。 //填充色换掉,首先要有个颜色填充器 //imagecolorallocate--为一幅图像分配颜色 $blue=imagecolorallocate($im,0,102,255); //将这个blue颜色填充到背景上去 //imagefill--区域填充 imagefill($im,0,0,$blue); //第四部,在蓝色的背景上输入一些线条,文字等 $white=imagecolorallocate($im,255,255,255); //imageline--画一条线段 imageline($im,0,0,200,200,$white); imageline($im,200,0,0,200,$white); //imagestring--水平地画一行字符串 imagestring($im,5,80,20,'Mr.One',$white); //第五步,输出最终图形 //以PNG格式将图像输出到浏览器或文件 imagepng($im); //第六步,我要将所有的资源全部清空 imagedestroy($im); ?>
Demo2.php
<?php //src可以插入各样类型的图片 //Demo1.php其实就是一张png图片 header('Content-Type:text/html;charset=gbk'); echo'<imgsrc="Demo1.php"alt="图形"/>'; ?>
Demo3.php
<?php //简单的验证码 //随机数 //为什么要循环0-15之间的数呢? //因为要实现最简单的字母和数字混搭 //十六进制0-9a-f //dechex--十进制转换为十六进制 //创建一个四位的验证码 for($i=0;$i<4;$i++){ $nmsg.=dechex(mt_rand(0,15)); } //echo$nmsg; header('Content-Type:image/png;'); $im=imagecreatetruecolor(75,25); $blue=imagecolorallocate($im,0,102,255); $white=imagecolorallocate($im,255,255,255); imagefill($im,0,0,$blue); imagestring($im,5,20,5,$nmsg,$white); imagepng($im); imagedestroy($im); ?>
Demo4.php
<?php define('__DIR__',dirname(__FILE__).'\\'); //加载已有的图像 header('Content-Type:image/png;'); //header('Content-Type:image/jpeg;'); //imagecreatefrompng--从PNG文件或URL新建一图像 //用image载入图像,是可以编辑图像 //在载入的图像中,加入一个小水印 $im=imagecreatefrompng(__DIR__.'ss.png'); //$im=imagecreatefromjpeg('xx.jpg'); $white=imagecolorallocate($im,255,255,255); imagestring($im,5,10,10,'http://www.oneStopWeb.cn',$white); imagepng($im); //imagejpeg($im); imagedestroy($im); ?>
Demo5.php
<?php define('__DIR__',dirname(__FILE__).'\\'); //加载已有的图像 header('Content-Type:image/png;'); //header('Content-Type:image/jpeg;'); //imagecreatefrompng--从PNG文件或URL新建一图像 //用image载入图像,是可以编辑图像 //在载入的图像中,加入一个小水印 $im=imagecreatefrompng(__DIR__.'ss.png'); //$im=imagecreatefromjpeg('xx.jpg'); $white=imagecolorallocate($im,255,255,255); imagestring($im,5,10,10,'http://www.oneStopWeb.cn',$white); //font字体还必须支持中文 $font='C:\WINDOWS\Fonts\SIMHEI.TTF'; //字体文件 $text=iconv('gbk','utf-8','阅谁问君诵'); //采用系统提供的字体 //第二参数,是字体的大小,第三个参数是旋转角度,4,5参数是坐标 imagettftext($im,20,10,50,100,$white,$font,$text); imagepng($im); //imagejpeg($im); imagedestroy($im); ?>
Demo6.php
<?php //微缩图,不但表面的大小改变了,容量也改变了 //是真的改变了,不是表面的缩小 define('__DIR__',dirname(__FILE__).'\\'); header('Content-Type:image/png;'); //getimagesize--取得图像大小 //获取到了原图的长度和高度 list($width,$height)=getimagesize(__DIR__.'ss.png'); //将原图缩放成40% $_width=$width*0.4; $_height=$height*0.4; //创建一个新图 $im=imagecreatetruecolor($_width,$_height); //下面的工作是,载入原图,将原图复制到新图上去 //载入原图 $_im=imagecreatefrompng(__DIR__.'ss.png'); //将原图重新采样,拷贝到新图上,最后按0.4的比例输出 //imagecopyresampled--重采样拷贝部分图像并调整大小 imagecopyresampled($im,$_im,0,0,0,0,$_width,$_height,$width,$height); //将新图输出 imagepng($im); //第二个参数不需要,直接null过度 //第三个参数,是0-100来调节JPG的清晰度 //如果是imagepng,那么全部都是高清 //imagejpeg($im,null,50); //销毁 imagedestroy($im); imagedestroy($_im); ?>
更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP图形与图片操作技巧汇总》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php面向对象程序设计入门教程》、《PHP网络编程技巧总结》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。