<?php
$img = imagecreatetruecolor(600, 600);  //创建一个600px * 600px 的真彩色图像
$cornflowerblue = imagecolorallocate($img, 100,149,237);
imagefill($img, 0, 0, $cornflowerblue);  //填充背景色
//imagefill($img, 30, 30, $cornflowerblue);    和上面一行代码的效果一样,中间的数字参数的改变对填充背景色没有影响
header('Content-Type:image/png');       //告诉浏览器以什么方式显示
imagepng($img);                    //PNG 格式将图像输出到浏览器或文件
imagedestroy($img);             //销毁图像资源
?>
<?php
$img = imagecreate(600, 600);
$cornflowerblue = imagecolorallocate($img, 100,149,237);   //第一个颜色就默认为图片的背景颜色
$magenta = imagecolorallocate($img, 255, 0, 255);
$springgreen = imagecolorallocate($img, 0, 255, 127);
header('Content-Type:image/png');
imagepng($img);
imagedestroy($img);
?>

通过上面两段代码,我想表达imagecreatetruecolor()和imagecreate()创建的图像,添加背景颜色的区别。

下面的代码是从(10, 10 )开始画一个100px * 100px 的正方形,正方形的100px*100px 包括边框的像素。而这个正方形的边框是1像素,空白像素加两个边框的2个像素就是100像素:

<?php
$img = imagecreatetruecolor(600, 600);
$cornflowerblue = imagecolorallocate($img, 100,149,237);;
$black = imagecolorallocate($img, 0, 0, 0);
imagefill($img, 0, 0, $cornflowerblue);  //填充背景色
imagerectangle($img, 10, 10, 109, 109, $black);
header('Content-Type:image/png');
imagepng($img);
imagedestroy($img);
?>

通过仔细地测量, 正方形的边框是从(11, 11)、(110, 110)开始画的。由此,如果我们要为这个600px * 600px的图片加上边框就得:

<?php
……
imagerectangle($img, 0, 0, 600 - 1, 600 - 1, $black);    //图片的长和宽减1
……
?>

再看:

<?php
……
imagesetpixel($img, 200, 300, $black);
……
?>

画出的点的坐标其实是(201, 301)。

画圆时:

<?php……
imageellipse($img, 200, 200, 100, 100, $black);
……
?>

圆心是(200, 200),  加上圆边的2个像素,此圆的长就是101,宽也是101。椭圆类似。

再来看画线时GD函数的表现:

<?php
……
imageline($img, 300, 300, 400, 400, $black);
……
?>

这条线段第一个点的坐标其实是(301, 301), 线段末点的坐标是(401, 401)。朋友们是不是有些明白了,php中的GD函数在画图时第一个开始点总是会比你在函数中指定的参数坐标值大1个像素。

再来看imagefilledarc()函数:

<?php
……
imagefilledarc($img, 200, 300, 300, 200, 0, 120, $black, IMG_ARC_PIE);
//imagefilledarc($img, 200, 300, 300, 200, 0, 120, $black, IMG_ARC_CHORD);
//imagefilledarc($img, 200, 300, 300, 200, 0, 120, $black, IMG_ARC_NOFILL);
//imagefilledarc($img, 200, 300, 300, 200, 0, 120, $black, IMG_ARC_EDGED);
……
?>

效果如下图所示:

来看一个有误差的函数 imagechar():

<?php
……
imagechar($img, 5, 100, 200, 'Z', $black);
……
?>

对于x轴,是在101像素就开始画了,但在y轴却有几像素的误差。

imagefontheight(int $font)   返回指定字体一个字符高度的像素值 如:imagefontheight(15) 将返回15。

array imagettftext( resource$image ,float$size ,float$angle ,int$x ,int$y ,int$color ,string$fontfile ,string$text ),其中的 x, y 手册的解释是:

x:由 xy 所表示的坐标定义了第一个字符的基本点(大概是字符的左下角)。这和imagestring不同,其 x,y 定义了第一个字符的左上角。例如 "top left" 为 0, 0。

y:Y 坐标。它设定了字体基线的位置,不是字符的最底端。

我一看到那基线就把我给弄蒙了,查了一下资料,请看下图:

实际显示时,像素还是有一些偏差。毕竟像素只是一个相对单位,它和显示器的分辨率有关,有时出现误差也是在所难免,但在标准的一像素的情况下,了解一下php GD库的这些函数的参数标准还是很有必要的。

当然GD中还有很多其它的函数,这里我也就不一一细说了,大家有什么好的想法,或我的行文有错误,希望大家不吝指出,我不胜感激。

对PHP中GD库的一些画图函数、及函数参数的学习总结(一)相关推荐

  1. php中gd库的使用,php GD库的使用

    两大功能:自己画,对于原有图片改变 PHP中GD库的使用 PHP 不仅限于只产生 HTML 的输出,还可以创建及操作多种不同格式的图像文件.PHP提供了一些内置的图像信息函数,也可以使用GD函数库创建 ...

  2. php gd库 函数 建立gif,PHP_PHP GD库生成图像的几个函数总结,使用GD库中提供的函数动态绘 - phpStudy...

    PHP GD库生成图像的几个函数总结 使用GD库中提供的函数动态绘制完成图像以后,就需要输出到浏览器或者将图像保存起来.在PHP中,可以将动态绘制完成的画布,直接生成GIF.JPEG.PNG和WBMP ...

  3. PHP 中 GD库(以及Jpgraph库) 的配置和使用。(满屏荒唐言,一把辛酸泪)

    PHP 中 GD库(以及Jpgraph库) 的配置和使用 (满屏荒唐言,一把辛酸泪)搞这种配置什么的真的太痛苦了! 一.安装前说明. 我的安装环境是,windows + IIS +php 首先我们要理 ...

  4. Python中pandas库实现数据缺失值判断isnull()函数

    [小白从小学Python.C.Java] [Python全国计算机等级考试] [Python数据分析考试必会题] ● 标题与摘要 Python中pandas库实现数据缺失值判断 isnull()函数 ...

  5. php中GD库的简单使用

    在php中需要图像处理的地方GD库会发挥重要的作用,php可以创建并处理包括GIF,PNG,JPEG,WBMP以及XPM在内的多种图像格式,简单的举几个例子: 1.用GD库会创建一块空白图片,然后绘制 ...

  6. PHP中GD库的使用

    概述 GD 库是 php 处理图形的扩展库,GD 库提供了一系列用来处理图片的 API ,使用 GD 库可以处理图片,或者生成图片,也可以给图片加水印.在网站上 GD 库通常用来生成缩略图,或者用来对 ...

  7. 关于织梦系统不支持php中GD库的问题

    大多数人在显成的PHP的CMS时,如织梦CMS,安装的时候不支持GD库,就导致整个网站的验证码不显示,以下是个人对此类问题的解决办法: 1.首先找到wamp的安装目录,找到PHP的文件夹,打开php. ...

  8. PHP GD库生成图像的几个函数总结

    使用GD库中提供的函数动态绘制完成图像以后,就需要输出到浏览器或者将图像保存起来.在PHP中,可以将动态绘制完成的画布,直接生成GIF.JPEG.PNG和WBMP四种图像格式.可以通过调用下面四个函数 ...

  9. php gd库 缩小图片_【源码分享】PHP中GD库实现图片等比例缩放

    //定义必备参数 $path = "./images"; $picname = "6.jpg"; $maxW = 200; //指定要缩放到的宽度 $maxH ...

  10. php GD库的使用

    两大功能:自己画,对于原有图片改变 PHP中GD库的使用 PHP 不仅限于只产生 HTML 的输出,还可以创建及操作多种不同格式的图像文件.PHP提供了一些内置的图像信息函数,也可以使用GD函数库创建 ...

最新文章

  1. js实现随机选取[10,100)中的10个整数,存入一个数组,并排序。 另考虑(10,100]和[10,100]两种情况。...
  2. Activiti工作流之网关
  3. PyTorch基础-猫狗分类实战-10
  4. 怎么恢复php格式关联,SCN与数据恢复关联
  5. java图片上传并解析,详解SpringMVC实现图片上传以及该注意的小细节
  6. HTTPS 互联网世界的安全基础
  7. 使用docker安装fastDFS
  8. eclipse cdt无法调试_eclipse导入Web项目并且部署到tomcat(超详细)
  9. python中pandas有误_python-pandas to_sql方法给出日期列错误
  10. python画50个图-Python绘制六种可视化图表详解,三维图最炫酷!你觉得呢?
  11. 密码加密模块 bcrypt (详细,好理解,示例源码)
  12. 面试、笔试中常用的SQL语句(数据库知识必杀)一共50个!!!
  13. ASP.NET生成Excel并下载
  14. vscode运行c语言
  15. ISBN 国际标准书号
  16. 水泊梁山迎圣诞,Python 抽奖助好汉
  17. conventional path export与direct path export
  18. mysql的软件卸载不了,控制台也卸载不了的问题
  19. 微软同步备份工具SyncToy,值得使用
  20. grequests并发之小试牛刀

热门文章

  1. 苹果手机屏幕镜像搜索不到电视_无线同屏器连接电视步骤
  2. python re模块的(...),group(),groups()
  3. c51单片机时钟程序汇编语言,51单片机时钟汇编程序
  4. 怎么找到使用驱动器中的光盘之前需要将其格式化磁盘的数据
  5. 《Java编程那些事儿----这是一本书》
  6. AppStore下载数据查看
  7. 电容器充放电的原理是什么?
  8. 离散ziggurat算法python实现_SLAM的数学基础(3):几种常见的概率分布的实现及验证。...
  9. 使用vue-video-player播放视频 一个页面多个视频,并且只能唯一播放
  10. 传智健康(黑马项目)