马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
你的确对PHP有兴趣,那么选择教材也是很重要的。 到后面为止,咱们已可以用GD完成作图根基的需求了。但有的时分生怕就要嫌ImageString
能用的五种字体少并且好看,那就要用到上面的函数了。这个函数答应咱们利用TTF字体;但你
必需具有这些字体的文件。
<?php
Header("Content-type: image/png");
$im = ImageCreate(400,250);
$col_back = ImageColorAllocate($im,136,200,152);
$col_write = ImageColorAllocate($im,255,255,255);
$col_black = ImageColorAllocate($im,0,0,0);
ImageTTFText($im,160,15,40,220,$col_black,"C:/windows/fonts/verdana.ttf","PNG");
// 新的内容只要这一句。参数是如许的:
// $im 不必说了。 160 这个地位,是字号(pt)。15 字串是倾斜角度,程度偏向起逆时针。
// 40,220是横纵坐标。注重,跟ImageString分歧的是,
// ImageString里指定的坐标是字串的左上角,而ImageTTFText指定的坐标是左下角。
// 接上去 $col_black 是色彩喽,
// "C:/windows/fonts/verdana.ttf"是字体文件途径,在Linux就是"/.../....."。
// 乃至可所以 "http://...."。然而,我没有如许用过,也不保举如许用。
// 由于不在本人机械上的器材毕竟是不成靠的,不成以委以重担。
// 最初就是要输入的字符串了。这是特别要引发注重的,
// 这里的字符串要用UTF-8编码!!!
// ASCII码 0~127的字符,ASCII码等于UTF-8编码,所以咱们在输入西文字符串的时分不需求转换。
// 而假如要输入中文,则需求一系列的转换。
// www.phpx.com的sadly写了一个GB2312码到UTF-8码转换的函数。
// 我的另外一篇文章专门剖析了这个函数的任务道理。
ImagePNG($im);
ImageDestroy($im);
?>
相似于ImageFontWidth()和ImageFontHeight()匡助咱们盘算ImageString输入字串将要占用的
高度和宽度,ImageTTFBBox可以匡助咱们盘算ImageTTFText输入字符串的情形。它的前往值是一个
8成员的数组,分离是(注重这个按次)左下、右下、右上、左上 的横纵坐标。试一下:
<?
$p=ImageTTFBBox(160,0,"C:/windows/fonts/verdana.ttf","PNP");
for($i=0;$i<8;$i+=2)
echo "(".$p[$i].",".$p[$i+1].")"."<br>";
?>
了局是如许的:
(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<4;$i++) echo $p[$i]."<br>";
?>
了局是如许的:
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);
?>
<img src="<?echo $pic_name;?>" <?echo $pic_size[3];?>>
.....
再反复一遍,这个函数不属于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过程当中的心得就全体说完了。感激人人的存眷!让咱们配合前进!
你的确对PHP有兴趣,那么选择教材也是很重要的。 |