第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. CentOS6.5安装elasticsearch+logstash+kibana

    首先卸载低版本的java环境,然后安装 java环境和Apache服务 yum install -y java--openjdk httpd 安装ES环境 elasticsearch wget htt ...

  2. [LeetCode]题解(python):066-Plus One

    题目来源: https://leetcode.com/problems/plus-one/ 题意分析: 给定一个数组,将数加一,返回新的数组.比如[9,9],返回[1,0,0]. 题目思路: 这道题目 ...

  3. Square(hdu 1511)

    题目描述: Problem Description Given a set of sticks of various lengths, is it possible to join them end- ...

  4. 第四节 二维条码与磁卡、IC卡、光卡之比较

    二维条码同其他几种自动识别技术的比较可见下表: 比较点 二维条形码 磁卡 IC卡 光卡 抗磁力 强 弱 中等 强 抗静电 强 中等 中等 强 抗损性 强可折叠可局部穿孔可局部切割 弱不可折叠不可穿孔不 ...

  5. iOS学习之NSAttributedString(富文本)

    NSAttributedString 叫做富文本,是一种带有属性的字符串,通过它可以轻松的在一个字符串中表现出多种字体.字号.字体大小等各不相同的风格,还可以对段落进行格式化,一般都是对可变富文本(N ...

  6. sqlite3 脚本的使用

    本来想找个专门查看数据库的工具的,后来发现脚本也非常easy,就直接用脚本了. sqlite3的脚本能够方便的查看当前数据库里的内容,使用起来事实上非常easy,这一列举一些最简单的使用方法,以后假设 ...

  7. idea 使用问题总结

    tomcat     edit configurations配置问题:         在deployment选项卡内增加artifact到server,在Application context选择应 ...

  8. XMPP个人信息展示

    在现阶段的通信服务中.各种标准都有,因此会出现无法实现相互连通,而XMPP(Extensible Message and presence Protocol)协议的出现.实现了整个及时通信服务协议的互 ...

  9. [Swust OJ 781]--牛喝水

    Time limit(ms): 1000 Memory limit(kb): 65535   The cows have a line of 20 water bowls from which the ...

  10. HTML文档类型声明的坑...

    如果发现js莫名其妙的报错(比如demo不报错,自己写的就报错),或者样式显示不正常,一定记得检查HTML页面里面加没加如下文档声明: <!DOCTYPE HTML PUBLIC "- ...