Linux是目前在服務器領域占有絕對市場份額的操作系統,而PHP GD則是位于這一操作系統下的一款負責圖像處理的庫。它可以通過代碼讀取、生成和修改圖片,并將其輸出為JPEG、PNG、GIF等多種格式,可廣泛應用于生成驗證碼、縮略圖、圖片水印等場景。
使用PHP GD生成縮略圖的過程非常簡單,可以通過簡單的代碼實現。例如,我們想將一張寬度為1200px的圖片生成一個寬度為400px的縮略圖:
$src_file = 'origin.jpg'; $dst_file = 'thumb.jpg'; list($src_width, $src_height, $src_type) = getimagesize($src_file); $thumb_width = 400; $thumb_height = intval($src_height*$thumb_width/$src_width); $src_image = imagecreatefromjpeg($src_file); $dst_image = imagecreatetruecolor($thumb_width, $thumb_height); imagecopyresampled($dst_image, $src_image, 0, 0, 0, 0, $thumb_width, $thumb_height, $src_width, $src_height); imagejpeg($dst_image, $dst_file); imagedestroy($src_image); imagedestroy($dst_image);
在上述代碼中,首先通過getimagesize函數獲取原圖的信息,從而獲取其寬度和高度。然后通過設定縮略圖的目標寬度和高度,計算出縮略圖的實際高度。接著通過imagecreatefromjpeg函數讀取原圖,創建一個真彩色的新圖像用于存放縮略圖。通過imagecopyresampled函數將原圖的部分或全部復制到新圖像上,并按照設定的縮略圖大小進行縮放。最后通過imagejpeg函數將生成好的縮略圖保存為JPEG文件。
除了生成縮略圖外,PHP GD還可以用來為圖片添加水印。例如,我們想給一張圖片添加一段文字水印,通常可以使用以下代碼:
$src_file = 'origin.jpg'; $text = 'www.example.com'; $font = 'arial.ttf'; $font_size = 24; $color = imagecolorallocate($im, 255, 255, 255); $src_image = imagecreatefromjpeg($src_file); $width = imagesx($src_image); $height = imagesy($src_image); $text_width = imagefontwidth($font_size)*strlen($text); $text_height = imagefontheight($font_size); $x = $width-$text_width-10; $y = $height-$text_height-10; imagettftext($src_image, $font_size, 0, $x, $y, $color, $font, $text); header('Content-Type: image/jpeg'); imagejpeg($src_image); imagedestroy($src_image);
在上述代碼中,首先通過imagecreatefromjpeg函數讀取原圖,并確定水印的文字內容、字體、字號、顏色等屬性。然后通過多個imagefontwidth和imagefontheight函數計算出文字所占用的寬度和高度,確定水印要放置的位置。最后通過imagettftext函數將文字渲染到原圖上,并以JPEG格式輸出。
綜上所述,PHP GD是一款功能強大的圖像處理庫,可以通過代碼實現各種圖像處理的操作。