本文实例讲述了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 "<img src="Demo1.php" alt="图形"/>";?>
Demo3.php
<?php//简单的验证码//随机数//为什么要循环 0-15 之间的数呢?//因为要实现最简单的字母和数字混搭//十六进制 0-9 a-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
<?phpdefine("__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
<?phpdefine("__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:WINDOWSFontsSIMHEI.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程序设计有所帮助。