Maison  >  Article  >  développement back-end  >  Tutoriel d'introduction à PHP, compétences en traitement d'image, partage d'exemples

Tutoriel d'introduction à PHP, compétences en traitement d'image, partage d'exemples

墨辰丷
墨辰丷original
2018-06-01 11:39:011305parcourir

这篇文章主要介绍了PHP入门教程之图像处理技巧,结合实例形式分析了图形图像的创建与显示方法,并附带了创建图形验证码及缩略图等应用的具体示例,需要的朋友可以参考下

Demo1.php

<?php
  //一般生成的图像可以是 png,jpg,gif,bmp
  //jpeg,wbmp
  //第一步,设置文件MIME类型,输出类型 text/html 类型是网页类型,默认可以不写
  //将输出类型改成图像流
  header(&#39;Content-Type:image/png;&#39;);
  //第二步,创建一个图形区域,图像背景
  //有两种创建方式,资源类型,一般要加上 @ 符号,防止出错
  //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,&#39;Mr.One&#39;,$white);
  //第五步,输出最终图形
  //以 PNG 格式将图像输出到浏览器或文件
  imagepng($im);
  //第六步,我要将所有的资源全部清空
  imagedestroy($im);
?>

Demo2.php

<?php
  //src 可以插入各样类型的图片
  //Demo1.php 其实就是一张 png 图片
  header(&#39;Content-Type:text/html; charset=gbk&#39;);
  echo &#39;<img src="Demo1.php" alt="图形"/>&#39;;
?>

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(&#39;Content-Type:image/png;&#39;);
  $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(&#39;__DIR__&#39;,dirname(__FILE__).&#39;\\&#39;);
  //加载已有的图像
  header(&#39;Content-Type:image/png;&#39;);
  //header(&#39;Content-Type:image/jpeg;&#39;);
  //imagecreatefrompng -- 从 PNG 文件或 URL 新建一图像
  //用 image 载入图像,是可以编辑图像
  //在载入的图像中,加入一个小水印
  $im = imagecreatefrompng(__DIR__.&#39;ss.png&#39;);
  //$im = imagecreatefromjpeg(&#39;xx.jpg&#39;);
  $white = imagecolorallocate($im,255,255,255);
  imagestring($im,5,10,10,&#39;http://www.oneStopWeb.cn&#39;,$white);
  imagepng($im);
  //imagejpeg($im);
  imagedestroy($im);
?>

Demo5.php

<?php
  define(&#39;__DIR__&#39;,dirname(__FILE__).&#39;\\&#39;);
  //加载已有的图像
  header(&#39;Content-Type:image/png;&#39;);
  //header(&#39;Content-Type:image/jpeg;&#39;);
  //imagecreatefrompng -- 从 PNG 文件或 URL 新建一图像
  //用 image 载入图像,是可以编辑图像
  //在载入的图像中,加入一个小水印
  $im = imagecreatefrompng(__DIR__.&#39;ss.png&#39;);
  //$im = imagecreatefromjpeg(&#39;xx.jpg&#39;);
  $white = imagecolorallocate($im,255,255,255);
  imagestring($im,5,10,10,&#39;http://www.oneStopWeb.cn&#39;,$white);
  //font 字体还必须支持中文
  $font = &#39;C:\WINDOWS\Fonts\SIMHEI.TTF&#39;;
  //字体文件
  $text = iconv(&#39;gbk&#39;,&#39;utf-8&#39;,&#39;阅谁问君诵&#39;);
  //采用系统提供的字体
  //第二参数,是字体的大小,第三个参数是旋转角度,4,5参数是坐标
  imagettftext($im,20,10,50,100,$white,$font,$text);
  imagepng($im);
  //imagejpeg($im);
  imagedestroy($im);
?>

Demo6.php

<?php
  //微缩图,不但表面的大小改变了,容量也改变了
  //是真的改变了,不是表面的缩小
  define(&#39;__DIR__&#39;,dirname(__FILE__).&#39;\\&#39;);
  header(&#39;Content-Type:image/png;&#39;);
  //getimagesize -- 取得图像大小
  //获取到了原图的长度和高度
  list($width,$height) = getimagesize(__DIR__.&#39;ss.png&#39;);
  //将原图缩放成 40%
  $_width = $width * 0.4;
  $_height = $height * 0.4;
  //创建一个新图
  $im = imagecreatetruecolor($_width,$_height);
  //下面的工作是,载入原图,将原图复制到新图上去
  //载入原图
  $_im = imagecreatefrompng(__DIR__.&#39;ss.png&#39;);
  //将原图重新采样,拷贝到新图上,最后按 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实现微信开发之自定义菜单

php socket通信的简单实现

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn