六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

說說PHP作圖(4)(完)

[摘要]到前面為止,我們已經(jīng)能夠用GD完成作圖基本的需要了。但有的時(shí)候恐怕就要嫌ImageString 能用的五種字體少而且難看,那就要用到下面的函數(shù)了。這個(gè)函數(shù)允許我們使用TTF字體;但你必須擁有這些字體...
到前面為止,我們已經(jīng)能夠用GD完成作圖基本的需要了。但有的時(shí)候恐怕就要嫌ImageString
能用的五種字體少而且難看,那就要用到下面的函數(shù)了。這個(gè)函數(shù)允許我們使用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");
// 新的內(nèi)容只有這一句。參數(shù)是這樣的:
// $im 不用說了。 160 這個(gè)位置,是字號(hào)(pt)。15 字串是傾斜角度,水平方向起逆時(shí)針。
// 40,220是橫縱坐標(biāo)。注意,跟ImageString不同的是,
// ImageString里指定的坐標(biāo)是字串的左上角,而ImageTTFText指定的坐標(biāo)是左下角。
// 接下來 $col_black 是顏色嘍,
// "C:/windows/fonts/verdana.ttf"是字體文件路徑,在Linux就是"/.../....."。
// 甚至可以是 "http://...."。但是,我沒有這樣用過,也不推薦這樣用。
// 因?yàn)椴辉谧约簷C(jī)器上的東西終究是不可靠的,不可以委以重任。
// 最后就是要輸出的字符串了。這是尤其要引起注意的,
// 這里的字符串要用UTF-8編碼!!!
// ASCII碼 0~127的字符,ASCII碼等于UTF-8編碼,所以我們?cè)谳敵鑫魑淖址臅r(shí)候不需要轉(zhuǎn)換。
// 而如果要輸出中文,則需要一系列的轉(zhuǎn)換。
// www.phpx.com的sadly寫了一個(gè)GB2312碼到UTF-8碼轉(zhuǎn)換的函數(shù)。
// 我的另一篇文章專門分析了這個(gè)函數(shù)的工作原理。

ImagePNG($im);
ImageDestroy($im);
?>

類似于ImageFontWidth()和ImageFontHeight()幫助我們計(jì)算ImageString輸出字串將要占用的
高度和寬度,ImageTTFBBox可以幫助我們計(jì)算ImageTTFText輸出字符串的情況。它的返回值是一個(gè)
8成員的數(shù)組,分別是(注意這個(gè)順序)左下、右下、右上、左上 的橫縱坐標(biāo)。試一下:

<?
$p=ImageTTFBBox(160,0,"C:/windows/fonts/verdana.ttf","PNP");
for($i=0;$i<8;$i+=2)
echo "(".$p[$i].",".$p[$i+1].")"."<br>";
?>

結(jié)果是這樣的:
(15,-1)
(306,-1)
(306,-117)
(15,-117)

為什么出現(xiàn)負(fù)數(shù)?我也不知道。這些坐標(biāo)是相對(duì)于什么的?無論它是相對(duì)于什么,他們之間的
相對(duì)位置是不會(huì)改變的。所以,這些都不太重要,我們根據(jù)左、右邊的橫坐標(biāo)的差和上、下邊縱坐標(biāo)
的差,就足夠計(jì)算出應(yīng)該把左下點(diǎn)安排在什么位置了。

好了,講完了利用TTF字體輸出字符串,也順便解決了前面“要想寫漢字還得費(fèi)一些麻煩”的
遺留話柄。以我來看,GD還剩下最后一部分內(nèi)容——打開現(xiàn)有圖片、處理、重新輸出。

首先,取得圖片的信息,是基本的需要。看下面的例子:
<?
$im=ImageCreateFromPNG("test.png");
// 這就是打開已經(jīng)存在的圖象。
// 很簡(jiǎn)單,參數(shù)是圖片路徑,返回值是圖象ID。

echo "The image's width is ".ImageSX($im).", and height is ".ImageSY($im).".";
// ImageSX()和ImageSY分別是得到圖象的寬和高,他們都只需要一個(gè)參數(shù)——已經(jīng)打開的圖象ID。

?>

另外,還有一個(gè)不屬于GD庫的獲取圖象信息的函數(shù):GetImageSize。

<?
$p=GetImageSize("test.png");
for($i=0;$i<4;$i++) echo $p[$i]."<br>";

?>

結(jié)果是這樣的:
50
100
3
width="50" height="100"

可見,該函數(shù)返回了一個(gè)關(guān)于該圖片信息的數(shù)組,四個(gè)元素分別為:前兩個(gè)是圖象的寬、高;
第三個(gè)代表圖象的格式:1 = GIF, 2 = JPG, 3 = PNG, 4 = SWF, 5 = PSD, 6 = BMP。最后一個(gè)
元素是用在HTML里的表示該圖象寬、高的字串(真是太方便了!)。比如我們可以這樣用:

<?
....
$pic_name="....";
$pic_size=GetImageSize($pic_name);

?>
<img src="<?echo $pic_name;?>" <?echo $pic_size[3];?>>

.....

再重復(fù)一遍,這個(gè)函數(shù)不屬于GD庫,所以,在沒有裝GD庫的PHP環(huán)境中也可以使用!!


縮略圖是經(jīng)常需要的功能。使用GD的“拷貝并調(diào)整大小”的函數(shù)可以很容易實(shí)現(xiàn)縮略圖。

<?
// 假設(shè)要把任意大小的圖片縮小(放大)到寬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);
// 計(jì)算新圖的高度。
 
$imt=ImageCreate(200,$nheight);
// 建立新圖。

ImageCopyResized($imt,$ims,0,0,0,0,200,$nheight,$owidth,$oheight);
// 拷貝到新圖并調(diào)整大小。
// 這個(gè)函數(shù)參數(shù)比較多,首先,是目的圖象和原圖象的ID,
// 然后的四個(gè)參數(shù)是目的圖象和原圖象的拷貝位置的坐標(biāo)。
// 如從原圖象的 20,30 拷到目的圖象的 10,0
// 則這四個(gè)參數(shù)是 10,0,20,30。
// 再接下來的四個(gè)也是最后四個(gè)參數(shù)是目的圖象和原圖象的拷貝區(qū)域的寬高,
// 如從原圖象拷貝 100x50 那么大的區(qū)域到目的圖象并縮小到 50x25
// 則這四個(gè)參數(shù)是 50,25,100,50。
// 而這里我使用的參數(shù),是將原圖完整地拷貝到新圖,(拷貝位置均為 0,0)
// 將原始大小無論放大還是縮小,均調(diào)整到寬200象素。
// 200,$nheight 是新圖的寬、高,$owidth,$oheight是原圖的寬、高。
// 使用這個(gè)函數(shù)的時(shí)候注意每一組參數(shù)里,
// 都是與目的圖象相關(guān)的參數(shù)在前,與原圖象相關(guān)的參數(shù)在后。

ImageJPEG($imt);
ImageDestroy($imt);
ImageDestroy($ims);
?>


好了,說到這里,我的在做GD過程中的心得就全部說完了。感謝大家的關(guān)注!讓我們共同進(jìn)步!



相關(guān)文章

主站蜘蛛池模板: 中文字幕第99页 | 天堂网在线观看 | 青草香蕉视频 | 亚洲成人福利 | 亚洲最大综合网 | 亚洲综合色婷婷六月丁香 | 亚洲色网址 | 亚洲va欧美va国产va天堂 | 偷自视频视频区免费 | 色花堂国产精品首页第一页 | 日本欧美在线 | 天天天干干干 | 色婷丁香| 日韩精品一区二区三区中文 | 青草香蕉视频 | 日韩手机在线观看 | 性久久久久久 | 色婷婷久久综合中文久久一本 | 亚洲国产天堂久久综合226 | 欧美一区二区免费 | 日韩黄视频 | 亚洲综合在线最大成人 | 四虎8848 | 午夜福免费福利在线观看 | 亚洲视频自拍 | 亚洲国产天堂在线观看 | 手机天堂 | 中文字幕国产 | 亚欧乱色一区二区三区 | 午夜看毛片 | 亚洲风情网 | 一二三四在线观看高清在线观看一 | 欧美亚洲国产一区 | 日韩第二页 | 欧美一级做一级爱a做片性 欧美一级做一a做片性视频 | 青青在线播放 | 欧美一级黄色录像片 | 亚洲图区欧美 | 亚洲欧美自拍另类图片色 | 日韩 欧美 亚洲 中文字幕 | 午夜欧美 |