之前碰到一個專案裡,用到了圖片處理技術。類似下面這個圖一樣
圖片分成3個部分組成,背景圖,二維碼圖片,二維碼圖片下面的文字。其中,二維碼圖片以及文字是動態產生的,不一樣的活動,二維碼圖片及文字描述都是不一樣的。
如何完成該需求,我們需要用php的圖片處理技術來實現。 php的圖片處理非常強大,可以做很多事。常見的有驗證碼圖片、圖片浮水印、縮圖等等。
首先我們要安裝php的擴充GD函式庫。有了他之後,才能繼續進行下面的步驟。以下主要以程式碼為主,函數的具體用法親們自行查閱文件。
建立畫布
主要用到的函數imagecreatetruecolor— 新建一個真彩色影像。
imagecreatetruecolor ( int $width , int $height ) : resource
<?php // 创建一个100*100的画布 $im = imagecreatetruecolor(100, 100); // 生成png图片 header("Content-type:image/png"); imagepng($im); imagedestroy($im);
給畫布設定顏色
主要函數
imagecolorallocate — 為一幅圖像分配顏色
imagefilll — 區域填色
imagecolorallocate ( resource $image , int $red , int $green , int $blue ) : int
imagecolorallocate## () 傳回標識符,代表了由給定的 RGB 成分組成的顏色。 red,green 和 blue 分別是所需的顏色的紅,綠,藍色成分。這些參數是 0 到 255 的整數或十六進位的 0x00 到 0xFF。
imagecolorallocate() 必須被呼叫以創建每一種用在 image 所代表的圖像中的顏色。
imagefill ( resource $image , int $x , int $y , int $color ) : bool
#imagefill() 在image 圖像的座標x, 圖像的座標x, 為 0, 0)處以color 顏色執行區域填入(即與x, y 點顏色相同且相鄰的點會填入)。
<?php header("Content-type:image/png"); // 创建一个100*100的画布 $im = imagecreatetruecolor(100, 100); // 设置红包 $color = imagecolorallocate($im, 255, 0, 0); // 填充画布 imagefill($im, 0, 0, $color); // 生成图片 imagepng($im); // 销毁资源 imagedestroy($im);
程式會產生一個100*100的紅色背景圖
##繪製點和線
主要函數:<?php $imgHandler = imagecreatetruecolor(100,100); // 填充背景 $bgColor = imagecolorallocate($imgHandler, 200, 30, 40); imagefill($imgHandler,0, 0, $bgColor); // 绘制点 for ($i = 0; $i < 100; $i++) { $pointColor = imagecolorallocate($imgHandler, rand(0,200), rand(0,200), rand(0,200)); imagesetpixel($imgHandler, rand(0, 100), rand(0, 100), $pointColor); } // 绘制线 for ($i = 0; $i < 10; $i++) { $lineColor = imagecolorallocate($imgHandler, rand(100, 225), rand(100, 225), rand(0, 50)); imageline($imgHandler, rand(0, 100), rand(0, 100), rand(0, 100), rand(0, 100), $lineColor); } header("Content-Type:image/png"); imagepng($imgHandler); imagedestroy($imgHandler);
繪製矩形
<?php $imgHandler = imagecreatetruecolor(100,100); // 填充背景 $bgColor = imagecolorallocate($imgHandler, 200, 30, 40); imagefill($imgHandler,0, 0, $bgColor); // 绘制矩形边框 $borderCol = imagecolorallocate($imgHandler, 23, 32, 200); imagerectangle($imgHandler, 0, 0, 99, 99, $borderCol); header("Content-Type:image/png"); imagepng($imgHandler); imagedestroy($imgHandler);
以上是PHP圖片處理(上)- 基礎的詳細內容。更多資訊請關注PHP中文網其他相關文章!