gd是什么格式文件,手機(jī)打開(kāi)gd文件方法

2021-11-14 466 閱讀

又到了一個(gè)大家非常熟悉的庫(kù)了,對(duì)于圖像圖形的處理來(lái)說(shuō),GD 庫(kù)是 PHPer 們繞不過(guò)去的一道坎。從很早很早的 CMS 或者 Discuz 時(shí)代,各類開(kāi)源軟件在安裝的時(shí)候就會(huì)明確地指出 GD 庫(kù)是它們必備的一個(gè)擴(kuò)展。當(dāng)然,在現(xiàn)在的 PHP 版本中,相信大家也不會(huì)在編譯的時(shí)候忽略掉這個(gè)庫(kù)。不管你是為圖片加水印、生成縮略圖還是制作驗(yàn)證碼圖片,都離不開(kāi) GD 庫(kù)的身影。

當(dāng)然,我們還是由淺入深地學(xué)習(xí)一些 GD 庫(kù)中的常用或好玩的函數(shù)。

gd是什么格式文件,手機(jī)打開(kāi)gd文件方法

當(dāng)前環(huán)境中的 GD 庫(kù)信息

首先,我們可以查看下當(dāng)前 PHP 環(huán)境中的 GD 庫(kù)版本及支持的圖片格式信息。

var_dump(gd_info());
// array(13) {
// ["GD Version"]=>
// string(26) "bundled (2.1.0 compatible)"
// ["FreeType Support"]=>
// bool(true)
// ["FreeType Linkage"]=>
// string(13) "with freetype"
// ["GIF Read Support"]=>
// bool(true)
// ["GIF Create Support"]=>
// bool(true)
// ["JPEG Support"]=>
// bool(true)
// ["PNG Support"]=>
// bool(true)
// ["WBMP Support"]=>
// bool(true)
// ["XPM Support"]=>
// bool(false)
// ["XBM Support"]=>
// bool(true)
// ["WebP Support"]=>
// bool(true)
// ["BMP Support"]=>
// bool(true)
// ["JIS-mapped Japanese Font Support"]=>
// bool(false)
// }

gd_info() 函數(shù)可以查看到當(dāng)前 GD 庫(kù)的版本信息,其它字段就是各種圖片模式的支持情況,可以看到在我的系統(tǒng)環(huán)境中,除了 XPM 這種格式不支持外,其它各種圖片格式都是正常支持的。最后一個(gè)是日文字體的支持,我們當(dāng)前環(huán)境中也是沒(méi)有的。

獲取圖片基本信息

getimagesize(),獲取圖片信息的這個(gè)函數(shù),從名字上看是獲取圖片大小的一個(gè)函數(shù)但也包含一些其它的信息,而且這個(gè)函數(shù)其實(shí)和 GD 庫(kù)沒(méi)什么太大的關(guān)系,也就是說(shuō)不需要 GD 庫(kù)的擴(kuò)展其實(shí)這個(gè)函數(shù)也是可以使用的。

var_dump(getimagesize("../img/1.png"));
// array(6) {
// [0]=>
// int(150)
// [1]=>
// int(150)
// [2]=>
// int(3)
// [3]=>
// string(24) "width="150" height="150""
// ["bits"]=>
// int(8)
// ["mime"]=>
// string(9) "image/png"
// }

返回的結(jié)果其實(shí)非常簡(jiǎn)單,0 和 1 分別就是圖片的寬高,2 是圖片的類型,之前的文章就講過(guò)它對(duì)應(yīng)的就是 IMAGETYPE_ 常量中對(duì)應(yīng)的圖片類型。3 是文字形式的圖片寬高,可以直接用于 img 標(biāo)簽中,可以看出來(lái),PHP 真的就是為了 web 而生的語(yǔ)言啊,連圖片大小獲取的函數(shù)都要帶個(gè)這樣的屬性回來(lái)。bits 就是圖片的 顏色比特位數(shù) 。mime 則是圖片的 MIME 類型了。

另外,getimagesize() 函數(shù)還有第二個(gè)參數(shù),這是一個(gè)引用類型的參數(shù),它將以一個(gè)關(guān)聯(lián)數(shù)組返回不同的 JPG APP 標(biāo)識(shí)。也就是說(shuō),它也是針對(duì) JPG 相關(guān)的圖片獲取一些額外的信息,其實(shí)就有點(diǎn)像上篇文章學(xué)習(xí)過(guò)的 EXIF 里面的信息。

var_dump(getimagesize("../img/2.jpg", $info));
// array(7) {
// [0]=>
// int(300)
// [1]=>
// int(244)
// [2]=>
// int(2)
// [3]=>
// string(24) "width="300" height="244""
// ["bits"]=>
// int(8)
// ["channels"]=>
// int(3)
// ["mime"]=>
// string(10) "image/jpeg"
// }

var_dump($info);
// array(1) {
// ["APP0"]=>
// string(14) "JFIF??"
// }

此外,我們?nèi)绻?JPG 圖片的話,還會(huì)多返回一個(gè) channels 屬性,表示的是如果圖片是 RBG 格式的,返回的就是 3 ,如果是 CMYK 格式的,返回的就是 4 。

我們還可以使用 getimagesize() 獲得遠(yuǎn)程文件的信息。

var_dump(getimagesize("https://upload-images.jianshu.io/upload_images/1074666-8df66a94d61cac74.png?imageMogr2/auto-orient/strip|imageView2/2/w/374/format/webp"));
// array(6) {
// [0]=>
// int(374)
// [1]=>
// int(617)
// [2]=>
// int(18)
// [3]=>
// string(24) "width="374" height="617""
// ["bits"]=>
// int(8)
// ["mime"]=>
// string(10) "image/webp"
// }

除了直接操作圖片文件之外,我們還可以直接從字符串中獲得圖片的信息。不過(guò)這些字符串一般也都是讀取到的圖片文件的二進(jìn)制信息。你直接來(lái)一句真正的 Hello World 之類的字符串那打死它也解析不出來(lái)什么圖片內(nèi)容的。

$data = file_get_contents('../img/1.png');
var_dump(getimagesizefromstring($data));
// array(6) {
// [0]=>
// int(150)
// [1]=>
// int(150)
// [2]=>
// int(3)
// [3]=>
// string(24) "width="150" height="150""
// ["bits"]=>
// int(8)
// ["mime"]=>
// string(9) "image/png"
// }

獲得圖片的一些信息

我們可以通過(guò)圖片的類型來(lái)獲取文件的擴(kuò)展名,這個(gè)類型常量也是 IMAGETYPE_ 類型的。

var_dump(image_type_to_extension(IMAGETYPE_PNG)); // string(4) ".png"
var_dump(image_type_to_extension(IMAGETYPE_JPEG, FALSE)); // string(4) "jpeg"

image_type_to_extension() 函數(shù)有第二個(gè)參數(shù),如果設(shè)置為 false 的話,就不會(huì)加上那個(gè) . 。

var_dump(image_type_to_mime_type(IMAGETYPE_PNG)); // string(9) "image/png"
var_dump(image_type_to_mime_type(IMAGETYPE_JPEG)); // string(10) "image/jpeg"

同樣地,也有 image_type_to_mime_type() 這個(gè)函數(shù)來(lái)獲得圖片的 MIME 信息內(nèi)容。另外,還有一個(gè)函數(shù)可以獲得當(dāng)前系統(tǒng)中所支持的圖片類型都有哪些。

var_dump(imagetypes()); // int(111)

額,很奇怪吧,怎么只返回了一個(gè) 111 ?其實(shí)它是保存的二進(jìn)制圖片支持信息,比如如果我們想知道當(dāng)前系統(tǒng)中有沒(méi)有 PNG 圖片的支持,就可以這樣使用:

var_dump(imagetypes() & IMAGETYPE_PNG); // int(3)

和 IMAGETYPE_PNG 與之后的結(jié)果就是 IMAGETYPE_PNG 本身的值,這就說(shuō)明當(dāng)前系統(tǒng)中是支持這個(gè)圖片類型的操作的。

小例子:創(chuàng)建一張自己的圖片

最后,我們?cè)賮?lái)看一個(gè)小例子,其實(shí)就是利用 GD 庫(kù)中的這些函數(shù)來(lái)創(chuàng)建一張簡(jiǎn)單的小圖片。

$im = @imagecreate(100, 50) or die("Cannot Initialize new GD image stream");
$background_color = imagecolorallocate($im, 255, 255, 255);
$text_color = imagecolorallocate($im, 233, 14, 91);
imagestring($im, 1, 5, 5, "Test 測(cè)試", $text_color);
imagepng($im, '../img/test.png');
imagedestroy($im);

其實(shí)每個(gè)函數(shù)的內(nèi)容都很好理解,函數(shù)名就已經(jīng)寫得很清楚了。當(dāng)然,我們后面的文章中將詳細(xì)地再學(xué)習(xí)一次。這個(gè)最終生成的圖片中,中文也是亂碼的,不過(guò)它已經(jīng)是可以當(dāng)做一個(gè)圖片驗(yàn)證碼來(lái)使用了,是不是非常地簡(jiǎn)單?

總結(jié)

今天的內(nèi)容不多,也都是比較基礎(chǔ)淺顯的一些函數(shù)的使用。當(dāng)然,這只是開(kāi)頭的第一篇文章,GD 庫(kù)不是一個(gè)簡(jiǎn)單的小擴(kuò)展,它里面的內(nèi)容非常多,能夠?qū)崿F(xiàn)的功能也非常復(fù)雜,不要走開(kāi),持續(xù)關(guān)注哦!

點(diǎn)擊展開(kāi)全文
出門下雨代表什么預(yù)兆,出門下雨代表什么意思 百科

出門下雨代表什么預(yù)兆,出門下雨代表什么意思

我們?cè)谏钪杏袥](méi)有發(fā)現(xiàn)身邊有一些人或者自己大多出門的時(shí)候,外面的天氣就會(huì)轉(zhuǎn)陰,然后下雨。說(shuō)它是巧合吧,也不是完全巧合,但又不知道是怎么回事,我們從民間的一些傳統(tǒng)倫理來(lái)說(shuō)是帶有一定的寓意的,那么你知道出...
閱讀全文
班會(huì)小游戲,班級(jí)活動(dòng)游戲 百科

班會(huì)小游戲,班級(jí)活動(dòng)游戲

班會(huì)小游戲精選50個(gè) 班會(huì)小游戲(一): 1、成語(yǔ)接龍 這個(gè)游戲的名字只是用來(lái)迷惑大家,而并不是真的要接龍。選出幾位年輕人上臺(tái),讓大家先在紙上寫出5個(gè)成語(yǔ),因?yàn)橛螒蝾}目叫成語(yǔ)接龍,所以大家會(huì)研究的是成...
閱讀全文
男人10處有痣是富貴痣,男人面相痣大全圖解 百科

男人10處有痣是富貴痣,男人面相痣大全圖解

對(duì)于每個(gè)家庭來(lái)說(shuō),總是少不了男人的存在,男人是家里的頂梁柱,男人的事業(yè)發(fā)展和生活質(zhì)量決定了一生的命運(yùn)如何。選擇一個(gè)怎樣的男人,也決定了一個(gè)女人的后半輩子的幸福!有人常常說(shuō)男人哪里長(zhǎng)痣最有福氣?接下來(lái)呢...
閱讀全文
發(fā)紅包吉利數(shù)字一覽表,紅包數(shù)字代表的意思大全 百科

發(fā)紅包吉利數(shù)字一覽表,紅包數(shù)字代表的意思大全

發(fā)紅包的時(shí)候呢?是有很多的紅包數(shù)字。有意義的微信生日紅包數(shù)字是有很多的。大家可以選擇的好的紅包數(shù)字,帶給大家的一個(gè)整體的感受也是不一樣的。大家也會(huì)希望在這樣的過(guò)程中能夠擁有一個(gè)很好的一個(gè)紅包,畢竟在臨...
閱讀全文
cailinkanei是仿ck嗎,cailinkanei是什么牌子 百科

cailinkanei是仿ck嗎,cailinkanei是什么牌子

cailinkanei不是仿CK,但是確實(shí)有打擦邊球的嫌疑,因?yàn)椴还苁窃谄放泼Q、產(chǎn)品類型上兩者卻有很多相似的地方,但是兩者的定位、產(chǎn)品外觀等等差異很大。cailinkanei是個(gè)國(guó)產(chǎn)品牌,名字是彩林...
閱讀全文
古代四大美女,中國(guó)四大美女是哪四位 百科

古代四大美女,中國(guó)四大美女是哪四位

古代四大美女 中國(guó)古代四大美女,即西施、王昭君、貂蟬、楊玉環(huán),享有“沉魚落雁之容,閉月羞花之貌”的美譽(yù)。 他們的故事也是流傳千古,她們都具有傾國(guó)傾城之美貌,但之所以這么聞名,更是因?yàn)樗齻冊(cè)跉v史上的影響...
閱讀全文
了解對(duì)方三觀的40個(gè)問(wèn)題,問(wèn)什么問(wèn)題可以了解一個(gè)人 百科

了解對(duì)方三觀的40個(gè)問(wèn)題,問(wèn)什么問(wèn)題可以了解一個(gè)人

每一個(gè)人的三觀都是不一樣的,因?yàn)槊總€(gè)人的生活經(jīng)歷和閱歷都是不一樣的,每個(gè)人的價(jià)值觀形成在每個(gè)階段都是不一樣的,我們了解一個(gè)人的時(shí)候,往往是通過(guò)與他聊天相處,通過(guò)聊天也可以看出來(lái)他這個(gè)人的基本的三觀,通...
閱讀全文
口加當(dāng)是什么字,口字旁加當(dāng)是什么字 百科

口加當(dāng)是什么字,口字旁加當(dāng)是什么字

口加當(dāng)是“噹”的簡(jiǎn)體字,讀作dāng,在電腦字庫(kù)中沒(méi)有。這個(gè)字在我們的歷史上曾經(jīng)出現(xiàn)過(guò),但是現(xiàn)在已經(jīng)不用了。1956年的時(shí)候,國(guó)家對(duì)漢字進(jìn)行了簡(jiǎn)化,把有偏旁的“噹”與無(wú)偏旁的“當(dāng)”一并簡(jiǎn)化為“當(dāng)”。 ...
閱讀全文
第四愛(ài)是什么意思,四愛(ài)是什么意思 百科

第四愛(ài)是什么意思,四愛(ài)是什么意思

第四愛(ài)(Reverse Love story),即獨(dú)立于第一類愛(ài)情(普通男女之戀)第二類愛(ài)情(男男之戀)、第三類愛(ài)情(女女之戀)外的第四類愛(ài)情,是指“女攻男受(女性強(qiáng)勢(shì),男性弱勢(shì))”的愛(ài)情模式。 第四...
閱讀全文
鬼最怕的七種生肖,鬼怕什么屬相生肖的人 百科

鬼最怕的七種生肖,鬼怕什么屬相生肖的人

雖然并沒(méi)有實(shí)據(jù),但是自古以來(lái)關(guān)于鬼怪的傳說(shuō)從未停止,而且據(jù)說(shuō)不止人怕鬼,鬼其實(shí)也會(huì)怕人,那鬼一般會(huì)害怕什么人呢?按屬相劃分的話,鬼最怕的生肖包括:生肖鼠、生肖狗、生肖龍、生肖虎、生肖牛、生肖馬和生肖雞...
閱讀全文