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 相关文章推荐
真正面向对象编程:PHP5.01发布
Oct 09 PHP
PHP __autoload函数(自动载入类文件)的使用方法
Feb 04 PHP
php利用腾讯ip分享计划获取地理位置示例分享
Jan 20 PHP
zf框架db类的分页示例分享
Mar 14 PHP
php广告加载类用法实例
Sep 23 PHP
php读取目录及子目录下所有文件名的方法
Oct 20 PHP
php静态文件返回304技巧分享
Jan 06 PHP
PHP生成随机密码方法汇总
Aug 27 PHP
PHP和C#可共用的可逆加密算法详解
Oct 26 PHP
Yii2针对游客、用户防范规则和限制的解决方法分析
Oct 08 PHP
PHP编程 SSO详细介绍及简单实例
Jan 13 PHP
php框架CodeIgniter主从数据库配置方法分析
May 25 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模板,主要想体现一下思路
2006/12/25 PHP
PHPWind 发帖回帖Api PHP版打包下载
2010/02/08 PHP
PHP调用MsSQL Server 2012存储过程获取多结果集(包含output参数)的详解
2013/07/03 PHP
Yii框架多语言站点配置方法分析【中文/英文切换站点】
2020/04/07 PHP
jquery实现增加删除行的方法
2015/02/03 Javascript
javascript实现简单的进度条
2015/07/02 Javascript
JS实现无限级网页折叠菜单(类似树形菜单)效果代码
2015/09/17 Javascript
js实现图片旋转 js滚动鼠标中间对图片放大缩小
2017/07/05 Javascript
WdatePicker.js时间日期插件的使用方法
2017/07/26 Javascript
移动端触摸滑动插件swiper使用方法详解
2017/08/11 Javascript
vue 自定义指令自动获取文本框焦点的方法
2018/08/25 Javascript
Vue核心概念Getter的使用方法
2019/01/18 Javascript
微信小程序判断页面是否从其他页面返回的实例代码
2019/07/03 Javascript
Vue.js下拉菜单组件使用方法详解
2019/10/19 Javascript
微信小程序日历插件代码实例
2019/12/04 Javascript
详解jQuery中的prop()使用方法
2020/01/05 jQuery
javascript设计模式 ? 解释器模式原理与用法实例分析
2020/04/17 Javascript
Jquery+javascript实现支付网页数字键盘
2020/12/21 jQuery
[44:09]DOTA2上海特级锦标赛A组小组赛#1 EHOME VS MVP.Phx第二局
2016/02/25 DOTA
在Python的Django框架中使用通用视图的方法
2015/07/21 Python
如何使用python爬取csdn博客访问量
2016/02/14 Python
Python实现pdf文档转txt的方法示例
2018/01/19 Python
Python遍历numpy数组的实例
2018/04/04 Python
解决Django一个表单对应多个按钮的问题
2019/07/18 Python
Boston Proper官网:美国女装品牌
2017/10/30 全球购物
波比布朗英国官网:Bobbi Brown英国
2017/11/13 全球购物
美国高品质个性化珠宝销售网站:Jewlr
2018/05/03 全球购物
Rodd & Gunn澳大利亚官网:新西兰男装品牌
2018/09/25 全球购物
下面关于"联合"的题目的输出是什么
2013/08/06 面试题
理工类毕业自我鉴定
2014/02/20 职场文书
信息技术培训感言
2014/03/06 职场文书
市场营销战略计划书
2014/05/06 职场文书
高中学生会竞选演讲稿
2014/08/25 职场文书
2014年售后服务工作总结
2014/11/18 职场文书
2014年创卫工作总结
2014/11/24 职场文书
background-position百分比原理详解
2021/05/08 HTML / CSS