PHP入门教程之图像处理技巧分析


Posted in PHP onSeptember 11, 2016

本文实例讲述了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:\WINDOWS\Fonts\SIMHEI.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 相关文章推荐
[FAQ]PHP中的一些常识:类篇
Oct 09 PHP
php设计模式 Factory(工厂模式)
Jun 26 PHP
php 获取今日、昨日、上周、本月的起始时间戳和结束时间戳的方法
Sep 28 PHP
基于preg_match_all采集后数据处理的一点心得笔记(编码转换和正则匹配)
Jan 31 PHP
php格式输出文件var_export函数实例
Nov 15 PHP
php设置页面超时时间解决方法
Sep 22 PHP
PHP自带方法验证邮箱是否存在
Feb 01 PHP
PHP面向对象程序设计之命名空间与自动加载类详解
Dec 02 PHP
Yii2实现中国省市区三级联动实例
Feb 08 PHP
Redis构建分布式锁
Mar 28 PHP
PHP使Laravel为JSON REST API返回自定义错误的问题
Oct 16 PHP
PHP使用redis位图bitMap 实现签到功能
Oct 08 PHP
PHP函数引用返回的实例详解
Sep 11 #PHP
PHP中in_array函数使用的问题与解决办法
Sep 11 #PHP
详解PHP中array_rand函数的使用方法
Sep 11 #PHP
PHP入门教程之上传文件实例详解
Sep 11 #PHP
PHP入门教程之会话控制技巧(cookie与session)
Sep 11 #PHP
PHP入门教程之表单与验证实例详解
Sep 11 #PHP
PHP入门教程之日期与时间操作技巧总结(格式化,验证,获取,转换,计算等)
Sep 11 #PHP
You might like
模板引擎Smarty深入浅出介绍
2006/12/06 PHP
详解PHP中的Traits
2015/07/29 PHP
php实现图片上传、剪切功能
2016/05/07 PHP
ThinkPHP的SAE开发相关注意事项详解
2016/10/09 PHP
基于JQuery的一句话搞定手风琴菜单
2012/09/14 Javascript
js仿百度有啊通栏展示效果实现代码
2013/05/28 Javascript
js用typeof方法判断undefined类型
2014/07/15 Javascript
基于jQuery插件实现环形图标菜单旋转切换特效
2015/05/15 Javascript
jQuery对JSON数据进行排序输出的方法
2015/06/24 Javascript
jquery使用ul模拟select实现表单美化的方法
2015/08/18 Javascript
jQuery旋转木马式幻灯片轮播特效
2015/12/04 Javascript
AngularJS ng-controller 指令简单实例
2016/08/01 Javascript
js中如何完美的解析数据
2018/03/18 Javascript
Vue.js 通过jQuery ajax获取数据实现更新后重新渲染页面的方法
2018/08/09 jQuery
详解JavaScript的数据类型以及数据类型的转换
2019/04/20 Javascript
搭建一个nodejs脚手架的方法步骤
2019/06/28 NodeJs
基于js实现判断浏览器类型代码实例
2020/07/17 Javascript
[04:28]2014DOTA2国际邀请赛 采访小兔子LGD挺进钥匙体育馆
2014/07/14 DOTA
Python 网页解析HTMLParse的实例详解
2017/08/10 Python
Python3.6+Django2.0以上 xadmin站点的配置和使用教程图解
2019/06/04 Python
python3的url编码和解码,自定义gbk、utf-8的例子
2019/08/22 Python
python输出数组中指定元素的所有索引示例
2019/12/06 Python
基于Python数据结构之递归与回溯搜索
2020/02/26 Python
使用HTML5 Geolocation实现一个距离追踪器
2018/04/09 HTML / CSS
澳大利亚领先的孕妇服装品牌:Mamaway
2018/08/14 全球购物
澳大利亚电商Catch新西兰站:Catch.co.nz
2020/05/30 全球购物
VLAN和VPN有什么区别?分别实现在OSI的第几层?
2014/12/23 面试题
客房主管岗位职责
2013/12/09 职场文书
工厂总经理岗位职责
2014/02/07 职场文书
2014年迎新年活动方案
2014/02/19 职场文书
夜不归宿检讨书
2014/02/25 职场文书
加入学生会演讲稿
2014/04/24 职场文书
让生命充满爱观后感
2015/06/08 职场文书
学习十八大的感悟
2015/08/11 职场文书
小学科学课教学反思
2016/02/23 职场文书
2016年社区“6.26”禁毒日宣传活动总结
2016/04/05 职场文书