六動態圖像的創建
只要安裝一些第三方的庫文件並具有一定的幾何知識就可以利用PHP來創建和處理圖像了事實上這不需要太多的幾何知識因為我大學沒有畢業仍然可以利用PHP創建圖像
在使用基本的圖像創建函數之前需要安裝GD庫文件如果要使用與JPEG有關的圖像創建函數還需要安裝jpegb如果要在圖像中使用Type 型字體則必須安裝tlib
在建立圖像創建環境之前還需要作一些准備工作首先安裝tlib其次安裝jpegb然後再安裝GD庫文件在安裝時一定要按這裡給定的順序進行安裝因為在編譯GD為庫時會用到jpegb如果沒有安裝jpegb在編譯時就會出錯
在安裝完這三個組件後還需要重新配置PHP這也是你對采用DSO方式安裝PHP感到慶幸的地方之一運行make clean然後在當前的配置中添加下面的內容
withgd=[/path/to/gd]
withjpegdir=[/path/to/jpegb]
withtlib=[/path/to/tlib]
完成添加後執行make命令然後再執行make install命令重新啟動Apache後運行phpinfo()來檢查一下新的設置是否生效了現在就可以開始圖像創建工作了
根據所安裝的GD庫文件的版本不同你也許能或者不能創建GIF或PNG格式的圖形文件如果安裝的是gd或以前的版本可以使用GIF格式的文件但不能創建PNG格式如果安裝的是gd以後的版本可以創建PNG文件但不能創建GIF格式的文件
創建一幅簡單的圖像也需要用到許多的函數我們將一步一步地進行說明
在這個例子中我們將創建一個PNG格式的圖像文件下面的代碼是一個包含所創建的圖像的MIME類型的頭部
<? header (Contenttype: image/png);
使用ImageCreate()創建一個代表空白圖像的變量這個函數要求以像素為單位的圖像大小的參數其格式是ImageCreate(x_size y_size)如果要創建一個大小為X的圖像就可以使用下面的語句
$newImg = ImageCreate();
由於圖像還是空白的因此你可能會希望用一些彩色來填充它然而你需要首先使用ImageColorAllocate()函數用其RGB值為這種顏色指定一個名字這一函數的格式為ImageColorAllocate([image] [red] [green] [blue])如果要定義天藍色可以使用如下的語句
$skyblue = ImageColorAllocate($newImg);
接下來需要使用ImageFill()函數用這種顏色填充這個圖像ImageFill()函數有幾個版本例如ImageFillRectangle()ImageFillPolygon()等為簡單起見我們通過如下的格式使用ImageFill()函數
ImageFill([image] [start x point] [start y point] [color])
ImageFill($newImg$skyblue);
最後建立圖像後釋放圖像句柄和所占用的內存
ImagePNG($newImg);
ImageDestroy($newImg); ?>
這樣創建圖像的全部代碼如下所示
<?
header (Contenttype: image/png);
$newImg = ImageCreate();
$skyblue = ImageColorAllocate($newImg);
ImageFill($newImg$skyblue);
ImagePNG($newImg);
ImageDestroy($newImg);
?>
如果把這個腳本文件保存為skybluephp並用浏覽器訪問它就會看到一個天藍色的X的PNG格式的圖像
我們還可以使用圖像創建函數對圖像進行處理例如把一個較大圖像作成一個小圖像
假設你有一幅圖像想從中裁剪出一個X大小的圖像你所需要作的是創建一個X大小的空白圖像創建一個包含原來圖像的圖像流然後把一個經過調整大小的原來的圖像放到新的空白圖像中
要完成這一任務的關健函數是ImageCopyResized()它要求的格式如下所示ImageCopyResized([new image handle][original image handle][new image X] [new Image Y] [original image X] [original image Y] [new image X] [new image Y] [original image X] [original image Y])
<?
/* 發送一個頭部以便讓浏覽器知道該文件所包含的內容類型*/
header(Contenttype: image/png);
/* 建立保存新圖像高度和寬度的變量*/
$newWidth = ;
$newHeight = ;
/* 建立給定高度和寬度的新的空白圖像*/
$newImg = ImageCreate($newWidth$newHeight);
/* 從原來較大的圖像中得到數據*/
$origImg = ImageCreateFromPNG(testpng);
/*拷貝調整大小後的圖像使用ImageSX()ImageSY()得到原來的圖像在XY方面上的大小 */
ImageCopyResized($newImg$origImg$newWidth$newHeightImageSX($origImg)ImageSY($origImg));
/*創建希望得到的圖像釋放內存 */
ImagePNG($newImg);
ImageDestroy($newImg);
?>
如果把這一小段腳本保存為resizedphp然後用浏覽器對它進行訪問就會看到一個X大小的PNG格式的圖形
From:http://tw.wingwit.com/Article/program/PHP/201311/21352.html