首頁 後端開發 php教程 PHP圖形圖像操作

PHP圖形圖像操作

Aug 08, 2016 am 09:20 AM
imagepng logo

GD庫簡介

GD指的是Graphic Device,PHP的GD庫是用來處理圖形的擴充庫,透過GD庫提供的一系列API,可以對影像進行處理或直接產生新的圖片。

PHP除了能進行文字處理以外,透過GD庫,可以對JPG、PNG、GIF、SWF等圖片進行處理。 GD庫常用在圖片加浮水印,驗證碼產生等方面。

PHP預設已經整合了GD函式庫,只需要在安裝的時候開啟就行。

<span>header("content-type: image/png"); $img=imagecreatetruecolor(100, 100); $red=imagecolorallocate($img, 0xFF, 0x00, 0x00); imagefill($img, 0, 0, $red); imagepng($img); imagedestroy($img);<span><span></span></span></span></preubuntu></divmicrosoft></p> <divmicrosoft yahei sans gb neue font-size:14px line-height:21px><p><span>rre</span></p> <p><divmicrosoft yahei sans gb neue font-size:14px><p><span>要對圖形進行操作,首先要繪製一個畫布</span>畫筆所使用的顏色,需要透過imagecolorallocate函數進行分配,透過參數設定RGB的顏色值來決定畫筆的顏色:</p> <p><preubuntu mono line-height:1.6em font-size:13px word-break:break-word><span>$img = imagecreatetruecolor(100, 100);</span><span></span>然後我們透過呼叫繪製線段函數imageline進行線條的繪製,透過指定起點跟終點來最終得到線條。 </preubuntu></p> <p><preubuntu mono line-height:1.6em font-size:13px word-break:break-word><span>$red = imagecolorallocate($img, 0xFF, 0x00, 0x00);</span><span></span>線條繪製好以後,透過header與imagepng進行影像的輸出。 </preubuntu></p> <p><preubuntu mono line-height:1.6em font-size:13px word-break:break-word><span>imageline($img, 0, 0, 100, 100, $red);</span><span></span>最後可以呼叫imagedestroy釋放該圖片所佔用的記憶體。 </preubuntu></p> <p><preubuntu mono line-height:1.6em font-size:13px word-break:break-word><span>header("content-type: image/png"); imagepng($img);</span><span></span>透過上面的步驟,可以發現PHP繪製圖形非常的簡單,但很多時候我們不只是需要輸出圖片,可能我們還需要得到一個圖片文件,可以通過imagepng函數指定文件名將繪製後的圖像保存到文件中。 </preubuntu></p> <p><preubuntu mono line-height:1.6em font-size:13px word-break:break-word><span>imagedestroy($img);</span><span></span></preubuntu></p>在圖像中繪製文字</divmicrosoft></p> <divmicrosoft yahei sans gb neue font-size:14px line-height:21px><p></p> <p>GD庫可以進行多種圖形的基本操作,常用的有繪製線條,背景填充,畫矩形,繪製文字等。 <divmicrosoft yahei sans gb neue font-size:14px><p><span></span>跟繪製線條類似,首先需要新建一個圖片與初始化顏色。 </p> <p><preubuntu mono line-height:1.6em font-size:13px word-break:break-word><span>imagepng($img, 'img.png');</span><span></span>然後使用imagestring函數來進行文字的繪製,這個函數的參數很多:imagestring ( resource $image , int $font , int $x , int $y , string $s , int $col ),可以透過$font來設定字體的大小,x,y設定文字顯示的位置,$s是要繪製的文字,$col是文字的顏色。 </preubuntu></p> <p><preubuntu mono line-height:1.6em font-size:13px word-break:break-word><span>$img = imagecreatetruecolor(100, 100); $red = imagecolorallocate($img, 0xFF, 0x00, 0x00);</span><span></span></preubuntu></p></divmicrosoft></p>輸出圖像檔案<p><span></span></p> <p>前面我們已經了解到,透過將圖片儲存到檔案可以多次使用。透過指定路徑參數將影像儲存到檔案中。 <divmicrosoft yahei sans gb neue font-size:14px><p><preubuntu mono line-height:1.6em font-size:13px word-break:break-word><span>imagestring($img, 5, 0, 0, "Hello world", $red); header("content-type: image/png"); imagepng($img); imagedestroy</span><span>($img); </span><span></span>使用imagepng可以將圖像保存成png格式,如果要保存成其他格式需要使用不同的函數,使用imagejpeg將圖片保存成jpeg格式,imagegif將圖片保存成gif格式,需要說明的是,imagejpeg會對圖片進行壓縮,因此也可以設定一個質量參數。 </preubuntu></p> <p><preubuntu mono line-height:1.6em font-size:13px word-break:break-word><span>$filename = 'img.png'; imagepng($img, $filename);</span><span></span></preubuntu></p>生成圖像驗證碼</divmicrosoft></p> <p></p> <p>簡單的驗證碼其實就是在圖片中輸出了幾個字符,透過我們前面章節講到的imagestring函數就能實現。 <divmicrosoft yahei sans gb neue font-size:14px><p><span></span>但是在處理上,為了使驗證碼更加的安全,防止其他程序自動識別,因此常常需要對驗證碼進行一些幹擾處理,通常會採用繪製一些噪點,幹擾線段,對輸出的字符進行傾斜、扭曲等操作。 </p> <p><span></span>可以使用imagesetpixel繪製點來實現雜訊幹擾,但是只繪製一個點的作用不大,因此這裡常常會使用循環進行隨機繪製。 </p> <p><preubuntu mono line-height:1.6em font-size:13px word-break:break-word><span>$filename = 'img.jpg'; ?imagejpeg($img, $filename, 80);</span><span></span></preubuntu></p></divmicrosoft></p> <preubuntu mono line-height:1.6em font-size:13px word-break:break-word><span>for($i=0;$i<50;$i++) { imagesetpixel($im, rand(0, 100) , rand(0, 100) , $black); imagesetpixel($im, rand(0, 100) , rand(0, 100) , $green); } </span><span></span><br><p><br>給圖片添加水印<br></p><p></p><p>給圖片添加水印的圖片有兩種,一種圖片是一種在圖片上加上圖片上加上一個logo或其他的圖片。 <divmicrosoft yahei sans gb neue font-size:14px><p><span></span>因為這裡處理的是已經存在的圖片,所以可以直接從已存在的圖片建立畫布,透過imagecreatefromjpeg可以直接從圖片檔案建立圖片。 </p> <p><preubuntu mono line-height:1.6em font-size:13px word-break:break-word><span>$im = imagecreatefromjpeg($filename);</span><p><span>创建图像对象以后,我们就可以通过前面的GD函数,绘制字符串到图像上。如果要加的水印是一个logo图片,那么就需要再建立一个图像对象,然后通过GD函数imagecopy将logo的图像复制到源图像中。</span></p><preubuntu mono line-height:1.6em font-size:13px word-break:break-word><span>$logo = imagecreatefrompng($filename); imagecopy($im, $logo, 15, 15, 0, 0, $width, $height);</span><p><span>当将logo图片复制到原图片上以后,将加水印后的图片输出保存就完成了加水印处理。</span></p><preubuntu mono line-height:1.6em font-size:13px word-break:break-word><span>imagejpeg(</span><span>$im, $filename); </span></preubuntu></preubuntu></preubuntu></p></divmicrosoft></p><br><p></p><pre name="code"><?php //这里仅仅是为了案例需要准备一些素材图片 $url = 'http://www.iyi8.com/uploadfile/2014/0521/20140521105216901.jpg'; $content = file_get_contents($url); $filename = 'tmp.jpg'; file_put_contents($filename, $content); $url = 'http://wiki.ubuntu.org.cn/images/3/3b/Qref_Edubuntu_Logo.png'; file_put_contents('logo.png', file_get_contents($url)); //开始添加水印操作 $im = imagecreatefromjpeg($filename); $logo = imagecreatefrompng('logo.png'); $size = getimagesize('logo.png'); imagecopy($im, $logo, 15, 15, 0, 0, $size[0], $size[1]); header("content-type: image/jpeg"); imagejpeg($im);
登入後複製

版权声明:本文为博主原创文章,未经博主允许不得转载。

以上就介绍了PHP图形图像操作,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1321
25
PHP教程
1269
29
C# 教程
1249
24
福田汽車發表全新Logo,同時公佈祥菱Q系列車型的售價訊息 福田汽車發表全新Logo,同時公佈祥菱Q系列車型的售價訊息 Sep 12, 2023 pm 09:09 PM

8月29日,福田汽車舉辦了一場華麗的品牌煥新發表會,為業界帶來了一系列令人振奮的消息。新的標誌、歐曼智藍底部換電產品以及全新的祥菱Q汽車成為了發布會的焦點福田汽車的新標誌展示了公司對未來的雄心壯志。福田汽車表示,這個全新的標誌象徵著品牌的更新和蓬勃發展,標誌著公司進入了新的發展階段在發布會上,福田汽車還推出了備受矚目的歐曼智藍底部換電產品,為用戶帶來了更便捷、有效率的使用體驗。同時,全新推出的祥菱Q汽車系列也吸引了眾多目光,共有4款車型,售價從16.78萬元到16.88萬元不等,為消費者提供了

支付寶4年換新logo 支付寶4年換新logo Feb 23, 2024 pm 07:07 PM

支付寶每4年都是會更換全新的logo,那麼在2024年的logo是什麼樣的呢?用戶們能夠看到它有著全新的外觀,有著更高級的logo樣式。這篇支付寶4年換新logo介紹就能夠告訴大家具體內容,以下就是詳細介紹,趕快看看吧!支付寶使用教學支付寶4年換新logo是什麼logo展示:歷史樣式:1、2020版Logo2、2016版Logo3、所有版本logo軟體介紹:1、這個軟體裡成立於2004年,有著超多1000項生活服務。 2、這個軟體負責為數位化服務商提供產品和服務,有許多商家進駐。

iwatch只亮logo不開機怎麼辦 iwatch只亮logo不開機怎麼辦 Mar 25, 2023 pm 02:00 PM

iwatch只亮logo不開機的原因及解決方法:1、電量不足無法開機導致的,可以把iwatch的背面放在充電器上;2、系統版本問題導致的,可以把系統回退到穩定版本;3 、充電器或充電線故障導致的,可以使用另一根iwatch磁性充電線和另一個USB電源轉接器;4、硬體故障導致的,建議到專業第三方檢測機機構檢修。

谷歌更新安卓logo!大小寫、字體和綠色機器人都變了 谷歌更新安卓logo!大小寫、字體和綠色機器人都變了 Sep 08, 2023 pm 01:13 PM

【手機中國新聞】在下個月推出穩定版Android14之前,現在Google已經修改了Android標誌,包括logo和形象(綠色機器人)。新的Android3D標誌符合MaterialYou主題,在幾個方面與2019年的標誌有所不同。大小寫:從文字開始,Android中的第一個字母,即字母A現在是大寫的。以前都是小寫的。字體粗細:Android的logo字體較粗。換句話說,字體粗細增加了。綠色機器人:Android機器人的標誌(也被稱為Bugdroid)現在是3D的,有更多的曲線,更多的維度,更多的角色,

解決win10開機後黑屏問題的兩種方法 解決win10開機後黑屏問題的兩種方法 Dec 21, 2023 pm 03:45 PM

電腦開機logo顯示後就黑屏,這是有使用Win10系統用戶遇到的問題,可以先檢查連接線是否正常,也可以重啟電腦,這篇文章是本站給大家分享的解決Win10電腦開機logo顯示後就黑屏解決方法。方法一:1、首先,按【Ctrl+Alt+Del】組合鍵,再點選工作管理員。任務管理器窗口,點選左上角的【檔案】,在開啟的下拉項目中,選擇【執行新任務】。新任務窗口,輸入【Explorer.exe】指令,然後按【確定或回車】即可(勾選以系統管理權限建立此任務);2、按【Win+S】組合鍵,開啟Windows搜

PHP圖表產生函數詳細解說:gd函式庫、imagepng、imagestring等函數的圖表產生指南 PHP圖表產生函數詳細解說:gd函式庫、imagepng、imagestring等函數的圖表產生指南 Nov 18, 2023 pm 04:56 PM

PHP圖表生成函數詳細講解:gd庫、imagepng、imagestring等函數的圖表生成指南圖表生成在資料視覺化中扮演著重要的角色,能夠更直觀地呈現資料變化趨勢和關係。 PHP作為一種流行的伺服器端腳本語言,提供了一系列強大的圖表產生函數。本文將詳細介紹gd函式庫、imagepng、imagestring等函數的使用方法,並提供具體的程式碼範例,幫助讀者快速

Windows 10啟動後出現黑畫面問題 Windows 10啟動後出現黑畫面問題 Dec 28, 2023 pm 01:57 PM

電腦當下已經是每家每戶基本上都已經配置的一個電器了,在對電腦的不斷使用中一些奇奇怪怪的問題也慢慢的顯現出來,最近有很多的小伙伴們反應最近的電腦總是開機後就進入了黑屏,這是怎麼回事?其實想要解決這個問題非常的簡單,今天小編就為大家帶來了win10顯示歡迎後黑屏解決方法有需要的小伙伴們快來看看吧。 win10開機logo後黑屏解決方法:操作步驟:1.先查看電源連接線是否連接正常,偵測顯示器是否損壞,偵測方法只需要關閉電腦,只開啟顯示器是否會顯示無訊息。顯示無訊號則證明顯示器OK2、顯示卡驅動不相容

System76 公佈了即將推出的 Cosmic 桌面的徽標,alpha 版本計劃於 7 月底發布 System76 公佈了即將推出的 Cosmic 桌面的徽標,alpha 版本計劃於 7 月底發布 Jun 29, 2024 am 03:26 AM

硬體製造商 System76 開發的 Cosmic 桌面受到了 Linux 社群的熱烈關注。 Cosmic 使用現代 Rust 程式語言,將桌面環境的簡單性與效率結合起來

See all articles