您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
免费发信息
三六零分类信息网 > 晋城分类信息网,免费分类信息发布

说说PHP作图(四)(完)

2024/3/17 10:40:16发布13次查看
到前面为止,我们已经能够用gd完成作图基本的需要了。但有的时候恐怕就要嫌imagestring
能用的五种字体少而且难看,那就要用到下面的函数了。这个函数允许我们使用ttf字体;但你
必须拥有这些字体的文件。
类似于imagefontwidth()和imagefontheight()帮助我们计算imagestring输出字串将要占用的
高度和宽度,imagettfbbox可以帮助我们计算imagettftext输出字符串的情况。它的返回值是一个
8成员的数组,分别是(注意这个顺序)左下、右下、右上、左上 的横纵坐标。试一下:
$p=imagettfbbox(160,0,c:/windows/fonts/verdana.ttf,pnp);
  for($i=0;$i    echo (.$p[$i].,.$p[$i+1].).
;
?>
结果是这样的:
(15,-1)
(306,-1)
(306,-117)
(15,-117)
为什么出现负数?我也不知道。这些坐标是相对于什么的?无论它是相对于什么,他们之间的
相对位置是不会改变的。所以,这些都不太重要,我们根据左、右边的横坐标的差和上、下边纵坐标
的差,就足够计算出应该把左下点安排在什么位置了。
好了,讲完了利用ttf字体输出字符串,也顺便解决了前面“要想写汉字还得费一些麻烦”的
遗留话柄。以我来看,gd还剩下最后一部分内容——打开现有图片、处理、重新输出。
首先,取得图片的信息,是基本的需要。看下面的例子:
$im=imagecreatefrompng(test.png);
  // 这就是打开已经存在的图象。
  // 很简单,参数是图片路径,返回值是图象id。
echo the image's width is .imagesx($im)., and height is .imagesy($im)..;
  // imagesx()和imagesy分别是得到图象的宽和高,他们都只需要一个参数——已经打开的图象id。
?>
另外,还有一个不属于gd库的获取图象信息的函数:getimagesize。
$p=getimagesize(test.png);
  for($i=0;$i;
?>
结果是这样的:
50
100
3
width=50 height=100
可见,该函数返回了一个关于该图片信息的数组,四个元素分别为:前两个是图象的宽、高;
第三个代表图象的格式:1 = gif, 2 = jpg, 3 = png, 4 = swf, 5 = psd, 6 = bmp。最后一个
元素是用在html里的表示该图象宽、高的字串(真是太方便了!)。比如我们可以这样用:
....
$pic_name=....;
$pic_size=getimagesize($pic_name);
?>
>>
.....
再重复一遍,这个函数不属于gd库,所以,在没有装gd库的php环境中也可以使用!!
缩略图是经常需要的功能。使用gd的“拷贝并调整大小”的函数可以很容易实现缩略图。
// 假设要把任意大小的图片缩小(放大)到宽200象素。
  // header(content-type: image/jpeg);
  $pic_name=test.jpg;
  $ims=imagecreatefromjpeg($pic_name);
  // 打开原图。
$owidth=imagesx($ims);
  $oheight=imagesy($ims);
  // 取得原图的宽、高。
$nheight=round($oheight*200.0/$owidth);
  // 计算新图的高度。
$imt=imagecreate(200,$nheight);
  // 建立新图。
imagecopyresized($imt,$ims,0,0,0,0,200,$nheight,$owidth,$oheight);
  // 拷贝到新图并调整大小。
  // 这个函数参数比较多,首先,是目的图象和原图象的id,
  // 然后的四个参数是目的图象和原图象的拷贝位置的坐标。
  // 如从原图象的 20,30 拷到目的图象的 10,0
  // 则这四个参数是 10,0,20,30。
  // 再接下来的四个也是最后四个参数是目的图象和原图象的拷贝区域的宽高,
  // 如从原图象拷贝 100x50 那么大的区域到目的图象并缩小到 50x25
  // 则这四个参数是 50,25,100,50。
  // 而这里我使用的参数,是将原图完整地拷贝到新图,(拷贝位置均为 0,0)
  // 将原始大小无论放大还是缩小,均调整到宽200象素。
  // 200,$nheight 是新图的宽、高,$owidth,$oheight是原图的宽、高。
  // 使用这个函数的时候注意每一组参数里,
  // 都是与目的图象相关的参数在前,与原图象相关的参数在后。
imagejpeg($imt);
  imagedestroy($imt);
  imagedestroy($ims);
?>
好了,说到这里,我的在做gd过程中的心得就全部说完了。感谢大家的关注!让我们共同进步!
晋城分类信息网,免费分类信息发布

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录