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

2021-11-14 408 閱讀

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

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

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

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

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

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 庫的版本信息,其它字段就是各種圖片模式的支持情況,可以看到在我的系統(tǒng)環(huán)境中,除了 XPM 這種格式不支持外,其它各種圖片格式都是正常支持的。最后一個(gè)是日文字體的支持,我們當(dāng)前環(huán)境中也是沒有的。

獲取圖片基本信息

getimagesize(),獲取圖片信息的這個(gè)函數(shù),從名字上看是獲取圖片大小的一個(gè)函數(shù)但也包含一些其它的信息,而且這個(gè)函數(shù)其實(shí)和 GD 庫沒什么太大的關(guān)系,也就是說不需要 GD 庫的擴(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í)非常簡單,0 和 1 分別就是圖片的寬高,2 是圖片的類型,之前的文章就講過它對應(yīng)的就是 IMAGETYPE_ 常量中對應(yīng)的圖片類型。3 是文字形式的圖片寬高,可以直接用于 img 標(biāo)簽中,可以看出來,PHP 真的就是為了 web 而生的語言啊,連圖片大小獲取的函數(shù)都要帶個(gè)這樣的屬性回來。bits 就是圖片的 顏色比特位數(shù) 。mime 則是圖片的 MIME 類型了。

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

除了直接操作圖片文件之外,我們還可以直接從字符串中獲得圖片的信息。不過這些字符串一般也都是讀取到的圖片文件的二進(jìn)制信息。你直接來一句真正的 Hello World 之類的字符串那打死它也解析不出來什么圖片內(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"
// }

獲得圖片的一些信息

我們可以通過圖片的類型來獲取文件的擴(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ù)來獲得圖片的 MIME 信息內(nèi)容。另外,還有一個(gè)函數(shù)可以獲得當(dāng)前系統(tǒng)中所支持的圖片類型都有哪些。

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

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

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

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

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

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

$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 測試", $text_color);
imagepng($im, '../img/test.png');
imagedestroy($im);

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

總結(jié)

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

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

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

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

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

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

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

對于每個(gè)家庭來說,總是少不了男人的存在,男人是家里的頂梁柱,男人的事業(yè)發(fā)展和生活質(zhì)量決定了一生的命運(yùn)如何。選擇一個(gè)怎樣的男人,也決定了一個(gè)女人的后半輩子的幸福!有人常常說男人哪里長痣最有福氣?接下來呢...
閱讀全文
cailinkanei是仿ck嗎,cailinkanei是什么牌子 百科

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

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

古代四大美女,中國四大美女是哪四位

古代四大美女 中國古代四大美女,即西施、王昭君、貂蟬、楊玉環(huán),享有“沉魚落雁之容,閉月羞花之貌”的美譽(yù)。 他們的故事也是流傳千古,她們都具有傾國傾城之美貌,但之所以這么聞名,更是因?yàn)樗齻冊跉v史上的影響...
閱讀全文
口加當(dāng)是什么字,口字旁加當(dāng)是什么字 百科

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

口加當(dāng)是“噹”的簡體字,讀作dāng,在電腦字庫中沒有。這個(gè)字在我們的歷史上曾經(jīng)出現(xiàn)過,但是現(xiàn)在已經(jīng)不用了。1956年的時(shí)候,國家對漢字進(jìn)行了簡化,把有偏旁的“噹”與無偏旁的“當(dāng)”一并簡化為“當(dāng)”。 ...
閱讀全文
鬼最怕的七種生肖,鬼怕什么屬相生肖的人 百科

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

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

第四愛是什么意思,四愛是什么意思

第四愛(Reverse Love story),即獨(dú)立于第一類愛情(普通男女之戀)第二類愛情(男男之戀)、第三類愛情(女女之戀)外的第四類愛情,是指“女攻男受(女性強(qiáng)勢,男性弱勢)”的愛情模式。 第四...
閱讀全文