本文实例讲述了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
<?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: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程序设计有所帮助。
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:)!