第14章 处理图像

学习要点:

1.创建图像

2.简单小案例

在PHP5中,动态图象的处理要比以前容易得多。PHP5在php.ini文件中包含了GD扩展包,只需去掉GD扩展包的相应注释就可以正常使用了。PHP5包含的GD库正是升级的GD2库,其中包含支持真彩图像处理的一些有用的JPG功能。

一般生成的图形,通过PHP的文档格式存放,但可以通过HTML的图片插入方式SRC来直接获取动态图形。比如,验证码、水印、微缩图等。

一.创建图像

创建图像的一般流程:

1).设定标头,告诉浏览器你要生成的MIME类型。

2).创建一个图像区域,以后的操作都将基于此图像区域。

3).在空白图像区域绘制填充背景。

4).在背景上绘制图形轮廓输入文本。

5).输出最终图形。

6).清除所有资源。

7).其他页面调用图像。

设定标头指定MIME输出类型

<?php

header('Content-Type: image/png');

?>

创建一个空白的图像区域

<?php

$im = imagecreatetruecolor(200,200);

?>

在空白图像区域绘制填充背景

<?php

$blue = imagecolorallocate($im,0,102,255);

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

?>

在背景上绘制图形轮廓输入文本

<?php

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

imageline($im,0,0,200,200,$white);

imageline($im,200,0,0,200,$white);

imagestring($im, 5, 80, 20, "Mr.Lee", $white);

?>

输出最终图形

<?php

imagepng($im);

?>

清除所有资源

<?php

imagedestroy($im);

?>

其他页面调用创建的图形

<img src="Demo4.php" alt="PHP创建的图片" />

二.简单小案例

简单验证码

<?php

header('Content-type: image/png');

for($Tmpa=0;$Tmpa<4;$Tmpa++){

$nmsg.=dechex(rand(0,15));

}

$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,4,$nmsg,$white);

imagepng($im);

imagedestroy($im);

?>

加载已有的图像

<?php

header('Content-Type:image/png');

define('__DIR__',dirname(__FILE__).'\\');

$im = imagecreatefrompng(__DIR__.'222.png');

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

imagestring($im,3,5,5,'http://www.yc60.com',$white);

imagepng($im);

imagedestroy($im);

?>

加载已有的系统字体

<?php

$text = iconv("gbk","utf-8","李炎恢");

$font = 'C:\WINDOWS\Fonts\SIMHEI.TTF';

imagettftext($im,20,0,30,30,$white,$font,$text);

?>

图像微缩

<?php

header('Content-type: image/png');

define('__DIR__',dirname(__FILE__).'\\');

list($width, $height) = getimagesize(__DIR__.'222.png');

$new_width = $width * 0.7;

$new_height = $height * 0.7;

$im2 = imagecreatetruecolor($new_width, $new_height);

$im = imagecreatefrompng(__DIR__.'222.png');

imagecopyresampled($im2, $im, 0, 0, 0, 0,

$new_width, $new_height, $width, $height);

imagepng($im2);

imagedestroy($im);

Imagedestroy($im2);

?>

PS:扫一遍图像函数手册

===============================================================

<?php
/* // * 创建图像 *
//第一步,设置输出图片的类型
header('Content-Type:image/png'); //第二步,创建一个空白的画布,并返回画布的句柄
$img = imagecreatetruecolor(200, 200); //第三步,在空白的画布上面填充背景颜色,并返回此时的句柄
//创建背景颜色
$background_color = imagecolorallocate($img,135,206,250 );
//填充颜色
imagefill($img, 0, 0, $background_color); //第四步,在背景上面,绘制文字,线条等其他图形。
//创建一个白颜色
$white = imagecolorallocate($img, 255, 255, 255);
//画一条线
imageline($img, 0, 0, 200, 200, $white);
//也可以输出字符串
imagestring($img, 5, 40, 90, "HF_Ultrastrong", $white); //第五步,输出创建的图像,可以输出png,jpeg,wbmp,gif
imagepng($img); //第六步,销毁所使用的资源
imagedestroy($img);
*/ /*
// * 创建验证码 *
//文件头...
header("Content-type: image/png");
//创建真彩色白纸
$im = @imagecreatetruecolor(50, 20) or die("建立图像失败");
//获取背景颜色
$background_color = imagecolorallocate($im, 255, 255, 255);
//填充背景颜色(这个东西类似油桶)
imagefill($im,0,0,$background_color);
//获取边框颜色
$border_color = imagecolorallocate($im,200,200,200);
//画矩形,边框颜色200,200,200
imagerectangle($im,0,0,49,19,$border_color); //逐行炫耀背景,全屏用1或0
for($i=2;$i<18;$i++){
//获取随机淡色
$line_color = imagecolorallocate($im,rand(200,255),rand(200,255),rand(200,255));
//画线
imageline($im,2,$i,47,$i,$line_color);
} //设置字体大小
$font_size=12; //设置印上去的文字
$Str[0] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
$Str[1] = "abcdefghijklmnopqrstuvwxyz";
$Str[2] = "01234567891234567890123456"; //获取第1个随机文字
$imstr[0]["s"] = $Str[rand(0,2)][rand(0,25)];
$imstr[0]["x"] = rand(2,5);
$imstr[0]["y"] = rand(1,4); //获取第2个随机文字
$imstr[1]["s"] = $Str[rand(0,2)][rand(0,25)];
$imstr[1]["x"] = $imstr[0]["x"]+$font_size-1+rand(0,1);
$imstr[1]["y"] = rand(1,3); //获取第3个随机文字
$imstr[2]["s"] = $Str[rand(0,2)][rand(0,25)];
$imstr[2]["x"] = $imstr[1]["x"]+$font_size-1+rand(0,1);
$imstr[2]["y"] = rand(1,4); //获取第4个随机文字
$imstr[3]["s"] = $Str[rand(0,2)][rand(0,25)];
$imstr[3]["x"] = $imstr[2]["x"]+$font_size-1+rand(0,1);
$imstr[3]["y"] = rand(1,3); //写入随机字串
for($i=0;$i<4;$i++){
//获取随机较深颜色
$text_color = imagecolorallocate($im,rand(50,180),rand(50,180),rand(50,180));
//画文字
imagechar($im,$font_size,$imstr[$i]["x"],$imstr[$i]["y"],$imstr[$i]["s"],$text_color);
} //显示图片
imagepng($im);
//销毁图片
imagedestroy($im);
*/ ?>

PHP - 图像处理的更多相关文章

  1. Atitit 图像处理和计算机视觉的分类 三部分 图像处理 图像分析 计算机视觉

    Atitit 图像处理和计算机视觉的分类 三部分 图像处理 图像分析 计算机视觉 1.1. 按照当前流行的分类方法,可以分为以下三部分:三部分 图像处理 图像分析 计算机视觉1 1.2. 图像处理需要 ...

  2. Atitit 图像处理的摩西五经attilax总结

    Atitit 图像处理的摩西五经attilax总结 1. 数字图像处理(第三版)1 2. 图像处理基础(第2版)(世界著名计算机教材精选)1 3. 计算机视觉特征提取与图像处理(第三版)2 4. Op ...

  3. Atitit 图像处理的心得与疑惑 attilax总结

    Atitit 图像处理的心得与疑惑 attilax总结 1.1. 使用类库好不好??还是自己实现算法1 1.2. 但是,如果遇到类库体积太大,后者没有合适的算法,那就只能自己开发算法了1 1.3. 如 ...

  4. Atitit 图像处理 调用opencv 通过java  api   attilax总结

    Atitit 图像处理 调用opencv 通过java  api   attilax总结 1.1. Opencv java api的支持 opencv2.4.2 就有了对java api的支持1 1. ...

  5. Atitit MATLAB 图像处理 经典书籍attilax总结

    Atitit MATLAB 图像处理 经典书籍attilax总结 1.1. MATLAB数字图像处理1 1.2. <MATLAB实用教程(第二版)>((美)穆尔 著)[简介_书评_在线阅读 ...

  6. Atitit 图像处理类库大总结attilax qc20

    Atitit 图像处理类库大总结attilax qc20 1.1. 选择与组合不同的图像处理类库1 1.2. Halcon 貌似商业工具,功能强大.1 1.3. Openvc  Openvc功能也是比 ...

  7. Atitit MATLAB 图像处理attilax总结

    Atitit MATLAB 图像处理attilax总结 1.1. 下载 Matlab7.0官方下载_Matlab2012 v7.0 官方简体中文版-办公软件-系统大全.html1 1.2. Matla ...

  8. 使用MATLAB对图像处理的几种方法(下)

     试验报告 一.试验原理: 图像点处理是图像处理系列的基础,主要用于让我们熟悉Matlab图像处理的编程环境.灰度线性变换和灰度拉伸是对像素灰度值的变换操作,直方图是对像素灰度值的统计,直方图均衡是对 ...

  9. 使用MATLAB对图像处理的几种方法(上)

    实验一图像的滤波处理 一.实验目的 使用MATLAB处理图像,掌握均值滤波器和加权均值滤波器的使用,对比两种滤波器对图像处理结果及系统自带函数和自定义函数性能的比较,体会不同大小的掩模对图像细节的影响 ...

  10. 图像处理中任意核卷积(matlab中conv2函数)的快速实现。

    卷积其实是图像处理中最基本的操作,我们常见的一些算法比如:均值模糊.高斯模糊.锐化.Sobel.拉普拉斯.prewitt边缘检测等等一些和领域相关的算法,都可以通过卷积算法实现.只不过由于这些算法的卷 ...

随机推荐

  1. HTML5 总结-拖放-3

    HTML5 拖放 拖放(Drag 和 drop)是 HTML5 标准的组成部分. 拖放 拖放是一种常见的特性,即抓取对象以后拖到另一个位置. 在 HTML5 中,拖放是标准的一部分,任何元素都能够拖放 ...

  2. Python之路Day13

    day13主要内容:JavaScript.DOM.jQuery 武Sir blog:http://www.cnblogs.com/wupeiqi/articles/5369773.html JavaS ...

  3. C和指针---读书笔记。

    C和指针---读书笔记.1,unsigned int  声明无符号int类型 默认是 singned,即此整数类型包括正负数.也可用于long上.说明符有 unsigned signed short ...

  4. ipa制作

    打包ipa步骤: 项目名称 -> edit scheme -> 如图选择release 点击close后,选择真机 然后command+b编译程序,右击app,show in Finder ...

  5. MYSQLI - mysqli操作数据库

    <?php //模型类 class Model { //数据库连接 private $_conn = NULL; //where语句 private $_where = NULL; //表名称 ...

  6. [Swust OJ 85]--单向公路(BFS)

    题目链接:http://acm.swust.edu.cn/problem/0085/ Time limit(ms): 5000 Memory limit(kb): 65535   Descriptio ...

  7. android 4.2 root

    前一段因工作需要,对android4.2 进行root.但是在下载了 点击打开链接,下载了Superuser.apk,把对应的apk拷贝到system/app,su拷贝到/system/bin 与/s ...

  8. 用QT创建WINDOWS服务程序

    恩, qtservice挺好的http://www.qtsoftware.com/products/appdev/add-on-products/catalog/4/Utilities/qtservi ...

  9. 用 Python 测试框架简化测试

    用 Python 测试框架简化测试 摘要:本文将向您介绍了三种流行 Python 测试框架(zope.testing,py.test,nose)的基本特性,并讨论新一代的测试风格. 最近出现了行业级的 ...

  10. 基于visual Studio2013解决C语言竞赛题之0603打印素数

     题目