本文主要和大家分享,PHP改變圖片的尺寸大小方法實例,希望能幫助大家。
改變圖片的尺寸是一個很常見的功能需求,以下開始研究下關於PHP改變圖片尺寸的方法。先介紹一個自己寫的函數。
#
##03 |
# $imgsrc = "http://www.nowamagic.net/images/3.jpg"; |
#
###
##07 |
resizejpg($imgsrc,$imgdst,$width,$height); |
#
##09 |
函數 resizejpg($imgsrc,$imgdst,$imgwidth,$imgheight) |
#
11 |
//$imgsrc
jpg格式圖片路徑 $imgdst jpg格式圖片儲存檔名 $imgwidth要改變的寬度 $imgheight要改變的高度 |
#####################################################################
13 |
$arr = getimagesize($imgsrc); |
14 |
header("內容類型:
圖片/jpg"); |
##########
16 |
$imgWidth = $imgwidth; |
########################################## #17 ###### $imgHeight = $imgheight;############
19 |
$imgsrc =
imagecreatefromjpeg($imgsrc); |
20 |
$image =
imagecreatetruecolor($imgWidth, $imgHeight); //建立一個彩色的底圖 |
#
21 |
imagecopyresampled($image, $imgsrc,
0, 0, 0, 0,$imgWidth,$imgHeight,$arr[0],$arr[1]); |
#
####
imagecopyresampled
imagecopyresampled -- 重採樣拷貝部分影像並調整大小。
int imagecopyresampled ( resource dst_im, resource src_im, int dstX, int dstY, int srcX, int srcY, int dstW, int dstH, int srcW, int srcH)#pample#pim;幅影像中的一塊正方形區域拷貝到另一個影像中,平滑地插入像素值,因此,尤其是,減小了影像的大小而仍然保持了極大的清晰度。 dst_im 和 src_im 分別是目標影像和來源影像的識別碼。如果來源和目標的寬度和高度不同,則會進行相應的影像收縮和拉伸。座標指的是左上角。本函數可用於在同一幅圖內部拷貝(如果 dst_im 和 src_im 相同的話)區域,但如果區域交迭的話則結果不可預測。
附註: 因為調色盤影像限制(255+1 種顏色)有個問題。重採樣或濾波影像通常需要多於 255 種顏色,計算新的被重採樣的像素及其顏色時採用了一種近似值。對調色板圖像嘗試分配新顏色時,如果失敗我們選擇了計算結果最接近(理論上)的顏色。這並不總是視覺上最接近的顏色。這可能會產生怪異的結果,例如空白(或視覺上是空白)的圖像。要跳過這個問題,請使用真彩色圖像作為目標圖像,例如用 imagecreatetruecolor() 建立的。
附註: imagecopyresampled() 需要 GD 2.0.l 或更高版本。
一個簡單的範例:
01
| |
03 |
#$filename = 'test.jpg'; |
################################
07 |
header('內容類型:
圖片/jpeg'); |
#
10 |
清單($寬度,$高度)
= getimagesize($檔名); |
| 11 | $new_width = $width * $percent;
###
12 |
$new_height = $height * $percent; |
#
15 |
$image_p =
imagecreatetruecolor($new_width, $new_height); |
#
16 |
$圖片=
imagecreatefromjpeg($filename); |
##17 |
imagecopyresampled($image_p, $image,
0, 0, 0, 0, $new_width, $new_height, $width, $height); |
| 19 | //
輸出##########
20 |
imagejpeg($image_p,
空, 100); |
示例2:
view
source
print?
03 |
#$filename = 'test.jpg'; |
###
##################################
10 |
header('內容類型:
圖片/jpeg'); |
####
13 |
list($width_orig, $height_orig)
= getimagesize($檔名); |
#14 |
|
# #
15 |
$ratio_orig = $width_orig/$height_orig; |
#
17 |
if($寬度/$高度>$ratio_orig)
{ |
18 |
# $width = $height*$ratio_orig; |
#
##20 | $height = $width/$ratio_orig; |
#
#
24 |
$image_p =
imagecreatetruecolor($width, $height); |
#
25 |
$圖片=
imagecreatefromjpeg($filename); |
| 26 | imagecopyresampled($image_p, $image,
0, 0, 0, 0, $寬度, $高度, $width_orig, $height_orig);
###
##28 |
//
輸出##########
29 |
imagejpeg($image_p,
空, 100); |
有兩種改變影像大小的方法:
兩個函數的參數是一樣的,如下:
1 |
imageCopyResampled(dest,src ,dy,dx,sx,sy,dw,dh,sw,sh); |
#
2 |
imageCopyResized(dest,src,dy,dx,sx,sy,dw,dh,sw,sh); |
#範例:
02 |
$src =
ImageCreateFromJPEG('php.jpg'); |
##03 |
$width =
ImageSx($src); |
#
07 |
$dst=
ImageCreateTrueColor($x,$y); |
08 |
ImageCopyResampled($dst,$src,0,0,0,0,$x,$y,$widht,$height); |
09 |
header('內容類型
: 圖片/png'); |
#
|
以上是PHP改變圖片的尺寸大小方法實例的詳細內容。更多資訊請關注PHP中文網其他相關文章!