PHP - 图像处理

第14章 处理图像

 

学习要点:

1.创建图像

2.简单小案例

 

 

PHP5中,动态图象的处理要比以前容易得多。PHP5php.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,gifimagepng($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,200imagerectangle($im,0,0,49,19,$border_color);//逐行炫耀背景,全屏用1或0for($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);
*/ ?>

 

转载于:https://www.cnblogs.com/KTblog/p/4956403.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/574193.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机专业刚毕业本科生,计算机专业应届本科毕业生自我鉴定

计算机专业应届本科毕业生自我鉴定四年的大学生活是我人生这条线上的一小段&#xff0c;是闪闪发光的一段&#xff0c;它包含了汗水和收获&#xff0c;为我划平人生的线起着至关重要的作用。四年大学生活已接近尾声&#xff0c;感觉非常有必要总结一下大学四年的得失&#xff0…

佳能c3320怎么设置接收方_入门级单反相机佳能800D是否值得买?在我看来价格决定一切...

佳能入门级单反相机800D是否值得买看了就清楚旺灵龙如果你是一位刚刚准备购买数码单反相机的入门小白&#xff0c;佳能最新的EOS 800D的肯定是你现在最容易拿来对比的选择。新相机在性能与操作便利性方面的良好结合&#xff0c;无疑将是入门级单反性价比最高的一款机型。佳能(C…

Objective-c @property和@Synthesize

在Objective-c中&#xff0c;使用property来标识属性&#xff08;一般是实例变量&#xff09;。在实现文件中使用synthesize标识所声明的变量&#xff0c;让系统自动生成设置方法和获取方法。 也就是说property和synthesize配对使用&#xff0c;让系统自动生成设置方法和获取方…

文件上传控件 css,CSS3 自定义文件上传输入控件界面

CSS语言&#xff1a;CSSSCSS确定body{background: white;}.wrap {max-width: 60%;margin: 50px auto;}.file {position: relative;display: inline-block;cursor: pointer;height: 2.5rem;}.file input {min-width: 14rem;margin: 0;filter: alpha(opacity0);opacity: 0;}.file…

php接口返回一个数组怎末写_php api返回json数组

[PHP] 为JSON数据的API返回空数组或者空对象PHP 中&#xff0c;不管是 list 或者 dictionary 都使用一样的 [](或者 array()) 来定义。在使用 JSON 作为 API 数据 Content-Type 的时候&#xff0c;会有这样一个问题&#xff1a;如何返回一个空对象和一个空数组&#xff1f;使用…

stm8时钟源

下面4种时钟源可用做主时钟&#xff1a; 1-24MHz高速外部晶体振荡器(HSE)最大24MHz高速外部时钟信号(HSE user-ext)16MHz高速内部RC振荡器(HSI)128KHz低速内部RC(LSI)各个时钟源可单独打开或关闭&#xff0c;从而优化功耗。 (一)HSE 高速外部时钟信号可由下面两个时钟源产生&am…

nexus 仓库类型_Maven私服Nexus的搭建

私服存在的合理性Maven中的依赖是从服务器仓库中下载的&#xff0c;Maven的仓库只有两大类&#xff1a;本地仓库远程仓库&#xff0c;其中在远程仓库中又分成了3种&#xff1a;中央仓库 、私服、其它公共库。Maven用户直接连接远程仓库下载构件的做法是Maven不建议使用的&#…

用soapUI测试webservice

测试webservice时&#xff0c;有时需要写一个客户端来向服务端发起请求才可以测试服务&#xff0c;最近看到一款工具soap ui&#xff0c;也可以调试VS2010中的程序。 首先要把webservice 发布到本地&#xff0c;网上已经有发布本地的例子&#xff0c;这里就不细说了。发布之后&…

ae中心点重置工具_AE中图形绘制的6大技巧,简单易操作

AE中的图形系统和文字系统很相似&#xff0c;都有自己相对独立的一套基础动画系统。当我们打开AE软件&#xff0c;面对空白的面板&#xff0c;如何通过一步步的操作填充画面&#xff0c;做出酷炫的效果&#xff0c;这其中图形占据很大的比重&#xff0c;更不用说流行的MG动画&a…

360浏览器 ajax取缓存,web开发遇到的坑之360浏览器缓存问题

web开发遇到的坑之360浏览器缓存问题再使用360浏览器&#xff0c;浏览我自己开发的一个配置的web管理后台时&#xff0c;发现&#xff0c;使用ctrlF5都不能刷新表格的数据&#xff0c;还有&#xff0c;我添加字段时&#xff0c;明明是添加成功的&#xff0c;用sql再数据库查都能…

Mac安装软件报“打不开。。。,因为它来自身份不明的开发者”的解决办法

问题描述 在Mac上安装git&#xff0c;双击pkg进行安装&#xff0c;报如下图错误&#xff1a; 解决办法 不要双击pkg文件&#xff0c;改成选中文件之后&#xff0c;鼠标右键&#xff0c;选择“打开方式->安装器&#xff08;默认&#xff09;”&#xff0c;即可继续安装。 转载…

模型预测控制c语言程序_搭建第一个程序控制电路LED灯,体会C语言的魅力

学习C语言&#xff0c;先从读程序开始&#xff01;这一点是过来人的经验之谈。本文建议大家选择一款图形编程软件&#xff0c;本文选择了Mixly。一、首先&#xff0c;介绍一下arduino UNO控制器内部电压的问题。v 高电平(5V)&#xff1a;对应数值是1&#xff0c;输入状态3.5V-5…

ajax通过什么实现,ajax(通过jQuery实现)

使用jQuery实现ajax相对来说方便一点&#xff0c;看w3cschool有几种实现的方法&#xff0c;我就总结一下自己以后会用到的几种方法$.ajax方法&#xff1a;$.ajax方法里面有很多个参数可以使用&#xff0c;但我这里就写自己常用的几个参数&#xff1a;1.url:要求为String类型的参…

mysql: you can't specify target table 问题解决

首先创建一个表&#xff1a; CREATE TABLE t1 ( id INT(11) NULL DEFAULT NULL, name VARCHAR(20) NULL DEFAULT NULL ) 插入几条数据&#xff1a; mysql> select * from t1; ------------ | id | name | ------------ | 1 | chen | | 2 | li | | 3 | huan | -…

s丅7318是啥芯片_透彻解析LED驱动芯片HT1632C指令集与驱动编程

HT1632C是一款很常用的LED(数码管或点阵)驱动芯片&#xff0c;虽然官方已经宣布该芯片明年(2021年)即将寿终正寝(停产)&#xff0c;但是相同厂家生产的同系列芯片的控制方式通常是相同的(事实上&#xff0c;大多数LED驱动芯片差别也不大)&#xff0c;所以了解HT1632C的控制原理…

服务器显示不明用户远程过,服务器显示不明用户远程过

服务器显示不明用户远程过 内容精选换一换Windows操作系统云服务器蓝屏&#xff0c;如图1所示。使用了来源不明的第三方软件。CPU占用过高导致。因为误操作或者病毒引起的系统文件、注册表损坏。操作系统在蓝屏的情况下&#xff0c;会显示对应的bugcheck code以及可能的导致蓝屏…

【转】Linux ln(link) 命令详解

原文链接 http://blog.chinaunix.net/uid-25445243-id-3206874.html 功能&#xff1a;为某一个文件或目录在另外一个位置建立一个同步的链接&#xff0c;类似Windows下的超级链接。这个命令最常用的参数是-s&#xff0c;具体用法是&#xff1a;sudo ln -s 源文件 目标文件当我们…

微信小程序定义全局变量_微信小程序第二天学习内容分享

微信小程序的生命周期文件的配置在app.js文件中&#xff1b;方法&#xff1a;onLaunch,onShow,onHideapi链接&#xff1a;https://developers.weixin.qq.com/miniprogram/dev/reference/api/App.html#onHideonError,当前也可以自定义&#xff0c;用console测试事件的执行情况&a…

discuz设置用户每天回帖数_discuz回贴通知插件实现-显示用户状态设置

一、完善用户是否开启回贴通知回贴通知插件建立模块时&#xff0c;指定了核心文件post_set.inc.php1、创立好数据库建立独立数据表(不建议直接修改原有的discuz数据库&#xff0c;防止discuz升级后数据库发生变化)&#xff0c;来保存是否开启回贴通知。create table 前缀_模块_…

C++中的数组与指针

数组与指针看起来很像 int a[] {1, 2 ,3}; int *p a; 如此,我们可以p[0], p[1], p[2] 看起来,与直接使用数组名没什么两样,但是看这段代码 sizeof(a) sizeof(p) 你就会知道,原来数组里还隐含了大小信息,这是指针所不能做到的 严格的说,数组是一种内置的数据类型,C标准对这种数…