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 相关文章推荐
Extended CHM PHP 语法手册之 DIY
Oct 09 PHP
ZF等常用php框架中存在的问题
Jan 10 PHP
PHP与MySQL开发的8个技巧小结
Dec 17 PHP
11个PHP 分页脚本推荐
Aug 15 PHP
thinkphp数据查询和遍历数组实例
Nov 28 PHP
php获取Google机器人访问足迹的方法
Apr 15 PHP
ThinkPHP中html:list标签用法分析
Jan 09 PHP
PHP无限极分类函数的实现方法详解
Apr 15 PHP
php 读写json文件及修改json的方法
Mar 07 PHP
PHP Laravel中的Trait使用方法
Jan 20 PHP
PHP中散列密码的安全性分析
Jul 26 PHP
PHP+MySQL实现在线测试答题实例
Jan 02 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
解析php中die(),exit(),return的区别
2013/06/20 PHP
php实现读取和写入tab分割的文件
2015/06/01 PHP
php简单创建zip压缩文件的方法
2016/04/30 PHP
js保存当前路径(cookies记录)
2010/12/14 Javascript
IE6/IE7中JavaScript json提示缺少标识符、字符串或数字问题处理
2014/12/16 Javascript
jQuery制作可自定义大小的拼图游戏
2015/03/30 Javascript
js实现浮动在网页右侧的简洁QQ在线客服代码
2015/09/04 Javascript
基于JS+Canves实现点击按钮水波纹效果
2016/09/15 Javascript
BootStrap与validator 使用笔记(JAVA SpringMVC实现)
2016/09/21 Javascript
JavaScript 闭包机制详解及实例代码
2016/10/10 Javascript
JS ES6中setTimeout函数的执行上下文示例
2017/04/27 Javascript
详解用函数式编程对JavaScript进行断舍离
2017/09/18 Javascript
浅谈webpack打包过程中因为图片的路径导致的问题
2018/02/21 Javascript
详解关于element级联选择器数据回显问题
2019/02/20 Javascript
node.js实现带进度条的多文件上传
2020/03/27 Javascript
探寻python多线程ctrl+c退出问题解决方案
2014/10/23 Python
python执行子进程实现进程间通信的方法
2015/06/02 Python
基于python(urlparse)模板的使用方法总结
2017/10/13 Python
Python高级用法总结
2018/05/26 Python
Django框架模板的使用方法示例
2019/05/25 Python
pandas进行时间数据的转换和计算时间差并提取年月日
2019/07/06 Python
Python中bisect的使用方法
2019/12/31 Python
浅谈pytorch中torch.max和F.softmax函数的维度解释
2020/06/28 Python
HTML5 微格式和相关的属性名称
2010/02/10 HTML / CSS
GIVENCHY纪梵希官方旗舰店:高定彩妆与贵族护肤品
2018/04/16 全球购物
芬兰设计商店美国:Finnish Design Shop US
2019/03/25 全球购物
英国家居用品和家居装饰品购物网站:Cox & Cox
2019/08/25 全球购物
Java面试题汇总
2015/12/06 面试题
财务与信息服务专业推荐信
2013/11/28 职场文书
购房协议书
2014/04/11 职场文书
中学生纪念九一八事变演讲稿
2014/09/14 职场文书
推广普通话共筑中国梦演讲稿
2014/09/21 职场文书
财务总监岗位职责范本
2015/04/03 职场文书
Pytest实现setup和teardown的详细使用详解
2021/04/17 Python
OpenCV-Python实现图像平滑处理操作
2021/06/08 Python
nginx之内存池的实现
2022/06/28 Servers