首页 后端开发 php教程 PHP图形图像操作

PHP图形图像操作

Aug 08, 2016 am 09:20 AM
imagepng logo

GD库简介

GD指的是Graphic Device,PHP的GD库是用来处理图形的扩展库,通过GD库提供的一系列API,可以对图像进行处理或者直接生成新的图片。

PHP除了能进行文本处理以外,通过GD库,可以对JPG、PNG、GIF、SWF等图片进行处理。GD库常用在图片加水印,验证码生成等方面。

PHP默认已经集成了GD库,只需要在安装的时候开启就行。

<span>header("content-type: image/png"); $img=imagecreatetruecolor(100, 100); $red=imagecolorallocate($img, 0xFF, 0x00, 0x00); imagefill($img, 0, 0, $red); imagepng($img); imagedestroy($img);<span><span></span></span></span></preubuntu></divmicrosoft></p> <divmicrosoft yahei sans gb neue font-size:14px line-height:21px><p><span>绘制线条</span></p> <p><divmicrosoft yahei sans gb neue font-size:14px><p><span>要对图形进行操作,首先要新建一个画布,通过imagecreatetruecolor函数可以创建一个真彩色的空白图片:</span></p> <preubuntu mono line-height:1.6em font-size:13px word-break:break-word><span>$img = imagecreatetruecolor(100, 100);</span><p><span>GD库中对于画笔所用的颜色,需要通过imagecolorallocate函数进行分配,通过参数设定RGB的颜色值来确定画笔的颜色:</span></p><preubuntu mono line-height:1.6em font-size:13px word-break:break-word><span>$red = imagecolorallocate($img, 0xFF, 0x00, 0x00);</span><p><span>然后我们通过调用绘制线段函数imageline进行线条的绘制,通过指定起点跟终点来最终得到线条。</span></p><preubuntu mono line-height:1.6em font-size:13px word-break:break-word><span>imageline($img, 0, 0, 100, 100, $red);</span><p><span>线条绘制好以后,通过header与imagepng进行图像的输出。</span></p><preubuntu mono line-height:1.6em font-size:13px word-break:break-word><span>header("content-type: image/png"); imagepng($img);</span><p><span>最后可以调用imagedestroy释放该图片占用的内存。</span></p><preubuntu mono line-height:1.6em font-size:13px word-break:break-word><span>imagedestroy($img);</span><p><span>通过上面的步骤,可以发现PHP绘制图形非常的简单,但很多时候我们不只是需要输出图片,可能我们还需要得到一个图片文件,可以通过imagepng函数指定文件名将绘制后的图像保存到文件中。</span></p><preubuntu mono line-height:1.6em font-size:13px word-break:break-word><span>imagepng($img, 'img.png');</span></preubuntu></preubuntu></preubuntu></preubuntu></preubuntu></preubuntu></divmicrosoft></p> <divmicrosoft yahei sans gb neue font-size:14px line-height:21px><p>在图像中绘制文字</p> <p><divmicrosoft yahei sans gb neue font-size:14px><p><span>GD库可以进行多种图形的基本操作,常用的有绘制线条,背景填充,画矩形,绘制文字等。</span></p> <p><span>跟绘制线条类似,首先需要新建一个图片与初始化颜色。</span></p> <preubuntu mono line-height:1.6em font-size:13px word-break:break-word><span>$img = imagecreatetruecolor(100, 100); $red = imagecolorallocate($img, 0xFF, 0x00, 0x00);</span><p><span>然后使用imagestring函数来进行文字的绘制,这个函数的参数很多:imagestring ( resource $image , int $font , int $x , int $y , string $s , int $col ),可以通过$font来设置字体的大小,x,y设置文字显示的位置,$s是要绘制的文字,$col是文字的颜色。</span></p><preubuntu mono line-height:1.6em font-size:13px word-break:break-word><span>imagestring($img, 5, 0, 0, "Hello world", $red); header("content-type: image/png"); imagepng($img); imagedestroy</span><span>($img); </span></preubuntu></preubuntu></divmicrosoft></p> <p><span>输出图像文件</span></p> <p><divmicrosoft yahei sans gb neue font-size:14px><p><span>前面我们已经了解到,通过imagepng可以直接输出图像到浏览器,但是很多时候,我们希望将处理好的图像保存到文件,以便可以多次使用。通过指定路径参数将图像保存到文件中。</span></p> <preubuntu mono line-height:1.6em font-size:13px word-break:break-word><span>$filename = 'img.png'; imagepng($img, $filename);</span><p><span>使用imagepng可以将图像保存成png格式,如果要保存成其他格式需要使用不同的函数,使用imagejpeg将图片保存成jpeg格式,imagegif将图片保存成gif格式,需要说明的是,imagejpeg会对图片进行压缩,因此还可以设置一个质量参数。</span></p><preubuntu mono line-height:1.6em font-size:13px word-break:break-word><span>$filename = 'img.jpg'; ?imagejpeg($img, $filename, 80);</span></preubuntu></preubuntu></divmicrosoft></p> <p>生成图像验证码</p> <p><divmicrosoft yahei sans gb neue font-size:14px><p><span>简单的验证码其实就是在图片中输出了几个字符,通过我们前面章节讲到的imagestring函数就能实现。</span></p> <p><span>但是在处理上,为了使验证码更加的安全,防止其他程序自动识别,因此常常需要对验证码进行一些干扰处理,通常会采用绘制一些噪点,干扰线段,对输出的字符进行倾斜、扭曲等操作。</span></p> <p><span>可以使用imagesetpixel绘制点来实现噪点干扰,但是只绘制一个点的作用不大,因此这里常常会使用循环进行随机绘制。</span></p> <preubuntu mono line-height:1.6em font-size:13px word-break:break-word><span>for($i=0;$i<span></span></span></preubuntu></divmicrosoft></p> <br><p><br></p> <pre name="code"><?php $img = imagecreatetruecolor(100, 40); $black = imagecolorallocate($img, 0x00, 0x00, 0x00); $green = imagecolorallocate($img, 0x00, 0xFF, 0x00); $white = imagecolorallocate($img, 0xFF, 0xFF, 0xFF); imagefill($img,0,0,$white); //生成随机的验证码 $code = &#39;&#39;; for($i = 0; $i < 4; $i++) { $code .= rand(0, 9); } imagestring($img, 5, 10, 10, $code, $black); //加入噪点干扰 for($i=0;$i<50;$i++) { imagesetpixel($img, rand(0, 100) , rand(0, 100) , $black); imagesetpixel($img, rand(0, 100) , rand(0, 100) , $green); } //输出验证码 header("content-type: image/png"); imagepng($img); imagedestroy($img);
登录后复制

给图片添加水印

给图片添加水印的方法一般有两种,一种是在图片上面加上一个字符串,另一种是在图片上加上一个logo或者其他的图片。

因为这里处理的是已经存在的图片,所以可以直接从已存在的图片建立画布,通过imagecreatefromjpeg可以直接从图片文件创建图像。

<span>$im = imagecreatefromjpeg($filename);</span></preubuntu></divmicrosoft></p>
登录后复制

创建图像对象以后,我们就可以通过前面的GD函数,绘制字符串到图像上。如果要加的水印是一个logo图片,那么就需要再建立一个图像对象,然后通过GD函数imagecopy将logo的图像复制到源图像中。

<span>$logo = imagecreatefrompng($filename); imagecopy($im, $logo, 15, 15, 0, 0, $width, $height);</span><p><span>当将logo图片复制到原图片上以后,将加水印后的图片输出保存就完成了加水印处理。</span></p><preubuntu mono line-height:1.6em font-size:13px word-break:break-word><span>imagejpeg(</span><span>$im, $filename); </span><br><p></p><pre name="code"><?php //这里仅仅是为了案例需要准备一些素材图片 $url = &#39;http://www.iyi8.com/uploadfile/2014/0521/20140521105216901.jpg&#39;; $content = file_get_contents($url); $filename = &#39;tmp.jpg&#39;; file_put_contents($filename, $content); $url = &#39;http://wiki.ubuntu.org.cn/images/3/3b/Qref_Edubuntu_Logo.png&#39;; file_put_contents(&#39;logo.png&#39;, file_get_contents($url)); //开始添加水印操作 $im = imagecreatefromjpeg($filename); $logo = imagecreatefrompng(&#39;logo.png&#39;); $size = getimagesize(&#39;logo.png&#39;); imagecopy($im, $logo, 15, 15, 0, 0, $size[0], $size[1]); header("content-type: image/jpeg"); imagejpeg($im);
登录后复制

版权声明:本文为博主原创文章,未经博主允许不得转载。

以上就介绍了PHP图形图像操作,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

<🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系统,解释
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆树的耳语 - 如何解锁抓钩
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1675
14
CakePHP 教程
1429
52
Laravel 教程
1333
25
PHP教程
1278
29
C# 教程
1257
24
福田汽车发布全新Logo,同时公布祥菱Q系列车型的售价信息 福田汽车发布全新Logo,同时公布祥菱Q系列车型的售价信息 Sep 12, 2023 pm 09:09 PM

8月29日,福田汽车举办了一场华丽的品牌焕新发布会,给业界带来了一系列令人振奋的消息。新的标志、欧曼智蓝底部换电产品以及全新的祥菱Q汽车成为了发布会的关注焦点福田汽车的新标志展示了公司对未来的雄心壮志。福田汽车表示,这个全新的标志象征着品牌的更新和蓬勃发展,标志着公司进入了新的发展阶段在发布会上,福田汽车还推出了备受瞩目的欧曼智蓝底部换电产品,为用户带来了更便捷、高效的使用体验。同时,全新推出的祥菱Q汽车系列也吸引了众多目光,共有4款车型,售价从16.78万元到16.88万元不等,为消费者提供了

支付宝4年换新logo 支付宝4年换新logo Feb 23, 2024 pm 07:07 PM

支付宝每4年都是会更换全新的logo,那么在2024年的logo是什么样的呢?用户们能够看到它有着全新的外观,有着更加高级的logo样式。这篇支付宝4年换新logo介绍就能够告诉大家具体内容,下面就是详细介绍,赶紧看看吧!支付宝使用教程支付宝4年换新logo是什么logo展示:历史样式:1、2020版Logo2、2016版Logo3、所有版本logo软件介绍:1、这个软件里成立于2004年,有着超多1000项生活服务。2、这个软件负责为数字化服务商提供产品和服务,有着很多商家入驻。

谷歌更新安卓logo!大小写、字体和绿色机器人都变了 谷歌更新安卓logo!大小写、字体和绿色机器人都变了 Sep 08, 2023 pm 01:13 PM

【手机中国新闻】在下月推出稳定版Android14之前,现在谷歌已经修改了Android标志,包括logo和形象(绿色机器人)。新的Android3D标志符合MaterialYou主题,在几个方面与2019年的标志有所不同。大小写:从文本开始,Android中的第一个字母,即字母A现在是大写的。以前都是小写的。字体粗细:Android的logo字体更粗。换句话说,字体粗细增加了。绿色机器人:Android机器人的标志(也被称为Bugdroid)现在是3D的,有更多的曲线,更多的维度,更多的角色,

iwatch只亮logo不开机怎么办 iwatch只亮logo不开机怎么办 Mar 25, 2023 pm 02:00 PM

iwatch只亮logo不开机的原因及解决办法:1、电量不足无法开机导致的,可以把iwatch的背面放在充电器上;2、系统版本问题导致的,可以把系统回退到稳定版本;3、充电器或充电线故障导致的,可以使用另一根iwatch磁性充电线缆和另一个USB电源适配器;4、硬件故障导致的,建议到专业第三方检测机机构检修。

解决win10开机后黑屏问题的两种方法 解决win10开机后黑屏问题的两种方法 Dec 21, 2023 pm 03:45 PM

电脑开机logo显示后就黑屏,这是有使用Win10系统用户遇到的问题,可以先检查连接线是否正常,也可以重启电脑,这篇文章是本站给大家分享的解决Win10电脑开机logo显示后就黑屏解决方法。方法一:1、首先,按【Ctrl+Alt+Del】组合键,然后点击任务管理器。任务管理器窗口,点击左上角的【文件】,在打开的下拉项中,选择【运行新任务】。新建任务窗口,输入【Explorer.exe】命令,然后按【确定或回车】即可(勾选以系统管理权限创建此任务);2、按【Win+S】组合键,打开Windows搜

PHP图表生成函数详细讲解:gd库、imagepng、imagestring等函数的图表生成指南 PHP图表生成函数详细讲解:gd库、imagepng、imagestring等函数的图表生成指南 Nov 18, 2023 pm 04:56 PM

PHP图表生成函数详细讲解:gd库、imagepng、imagestring等函数的图表生成指南图表生成在数据可视化中扮演着重要的角色,能够更直观地呈现数据变化趋势和关系。PHP作为一种流行的服务器端脚本语言,提供了一系列功能强大的图表生成函数。本文将详细介绍gd库、imagepng、imagestring等函数的使用方法,并提供具体的代码示例,帮助读者快速

Windows 10启动后出现黑屏问题 Windows 10启动后出现黑屏问题 Dec 28, 2023 pm 01:57 PM

电脑当下已经是每家每户基本上都已经配置的一个电器了,在对电脑的不断使用中一些奇奇怪怪的问题也慢慢的显现出来,最近有很多的小伙伴们反应最近的电脑总是在开机后就进入了黑屏,这是怎么回事呢?其实想要解决这个问题非常的简单,今天小编就为大家带来了win10显示欢迎后黑屏解决方法有需要的小伙伴们快来看看吧。win10开机logo后黑屏解决方法:操作步骤:1、首先查看电源连接线是否连接正常,检测显示器是否损坏,检测方法只需要关闭电脑,只打开显示器是否会显示无信息。显示无信号则证明显示器OK2、显卡驱动不兼容

System76 公布了即将推出的 Cosmic 桌面的徽标,alpha 版本计划于 7 月底发布 System76 公布了即将推出的 Cosmic 桌面的徽标,alpha 版本计划于 7 月底发布 Jun 29, 2024 am 03:26 AM

硬件制造商 System76 开发的 Cosmic 桌面受到了 Linux 社区的热烈关注。 Cosmic 使用现代 Rust 编程语言,将桌面环境的简单性与效率结合起来

See all articles