在之前的文章中為大家帶來了《PHP如何上傳檔案?看完就明白了! 》,其中詳細的給大家介紹了在PHP中應該怎樣上傳文件,這篇文章來一起看一看PHP中圖像處理的相關知識,希望對大家有幫助!
影像處理是PHP工作中常遇到的事情,我們遇到需要處理影像的場景有很多,例如影像驗證碼、圖片浮水印等等場景。其實學習影像處理的重點其實是學習PHP中GD系統的函數,PHP的影像處理需要GD庫的支持,那接下來我們先來看看關於GD庫的相關知識吧。
GD庫
#GD庫可以理解為用於建立圖形影像的函式庫,GD庫實際是由C語言編寫的,可以用於PHP中,除了PHP外還可以在Perl等多種語言中使用,GD 庫中提供了很多用來處理圖片的接口,
PHP 中使用GD庫可以在頁面中繪製各種圖形圖像,統計圖,還有圖像驗證碼也可以使用GD庫來實現。
範例如下:
<?php phpinfo(); ?>
當輸入之後,在輸出結果中,如果出現如下所示的兩個選項,則表示目前的機器支援透過GD來處理影像:
或可以使用:
<?php print_r(gd_info()); ?>
輸入之後執行,若輸出結果如下圖所示,也表示目前機器支援透過GD來處理圖像。
那如果沒有安裝好的話,也可以透過在Windows 系統下只需將php.ini 設定檔中「extension=php_gd2.dll」一項前面的註釋刪除的方法完成。
在PHP 中,透過GD 函式庫處理影像的操作一般分為4 個基本步驟:
建立畫布
繪製圖像
輸出圖像
釋放資源
建立畫布
我們所有的繪圖和影像處理都需要在一個背景圖片上面完成,也就是畫布,可以理解為為影像我們在記憶體中有一片臨時的區域作為畫布,用來儲存影像的訊息,以後的影像操作都會在這區域也就是畫布上進行。imagecreate() 和
imagecreatetruecolor() 用來建立畫布,它們的語法格式如下:
imagecreate(int $width, int $height) imagecreatetruecolor(int $width, int $height)其中,$width表示創建畫布的寬度也可以理解為圖像的寬度,$height 表示創建畫布的高度也就是圖像的高度這兩個函數都可以用來創建畫布,不過其中不同的是,他們可以容納的色彩範圍不同。
<?php $img = @imagecreatetruecolor(120, 20) or die('画布创建失败!'); ?>因為只是創建了一個畫布上面並沒有東西,瀏覽器也不會輸出畫布,但是可以透過imagesx() 和imagesy( ) 來取得影像的寬度和高度:
<?php $img = @imagecreatetruecolor(120, 20) or die('画布创建失败!'); echo '画布的宽度为:'.imagesx($img).'像素'; echo '<br>画布的高度为:'.imagesy($img).'像素'; ?>輸出結果:
imagecreatefromgif() : 通過GIF 文件或者URL 新建一個圖像
imagecreatefromjpeg() : 通過JPEG 文件或者UR 新建一個圖像
imagecreatefrompng() : 透過PNG 檔案或UR L新建一個映像
imagecreatefromwbmp()
輸出圖片
imagegif(resource $image[, string $filename]) imagejpeg(resource $image[, string $filename[, int $quality]]) imagepng(resource $image[, string $filename])
其中,$image为创建的一个图像资源;$filename表示为参数,用来设置文件需要保存的路径。
示例如下:
首先我在根目录中已经保存了一个名为php.png的图像文件
<?php header('Content-type:image/jpeg'); $image= imagecreatefrompng('php.png'); imagepng($image); ?>
输出结果:
通过imagecreatefrompng()函数和imagepng()成功的输出了一个格式为png的图片。
释放图像资源
通过上述示例已经成功的输出了图片,在图片的资源使用完成后,通常需要释放图像处理时所占用的内存,那应该怎样操作呢?
在PHP中我们通过imagedestroy() 函数来释放图像资源,语法格式如下:
imagedestroy(resource $image)
其中$image表示需要释放资源的图像
示例如下:
<?php header('Content-type:image/jpeg'); $image= imagecreatefrompng('php.png'); imagepng($image); imagedestroy($image); ?>
因为释放图像资源的操作是没有输出内容的,所以就不列出输出结果了。
推荐学习:《PHP视频教程》
以上是PHP中怎麼輸出圖片? (圖例詳解)的詳細內容。更多資訊請關注PHP中文網其他相關文章!