p_w_picpathcopyresampled ( resource $目標圖像資源 , resource $源圖像資源 , int $目標圖像X軸, int 目標圖像Y軸 , int $源圖像X軸 , int $源圖像Y軸 , int $目標圖像寬度 , int $目標圖像高度 , int $源圖像寬度 , int $源圖像高度 );
這個函數的參數較多,可是理解起來仍是很是簡單的!
其含義是:從某圖像(源圖像)的某個位置(X,Y)起復制指定區域(width,height)後,粘貼到另一個圖像(目標圖像)的某個位置(X,Y)起的指定區域(width,height)。
那麼,咱們就從這個函數來分析一下,咱們應該作的準備工做。
第一:目標圖像,並且目標圖像的數據是來源於源圖像的,因此,咱們只須要準備一張空圖像就能夠了,因此…
$destImg = p_w_picpathcreatetruecolor(width,height);
但關鍵問題是,目標圖像的資源的寬度和高度沒有辦法事先固定!並且咱們的目的是生成原圖的縮略圖,因此,若是咱們知道了源圖像的寬度和高度後,那麼就能夠肯定目標圖像的寬度和高度了!好了,幹活!
第二步:獲取源圖像的寬度和高度---getp_w_picpathsize
getp_w_picpathsize函數的語法是:
$變量名稱 = getp_w_picpathsize(「文件的位置及全稱」);
因此,咱們只須要知道源圖像的位置及全稱就能夠了,好了,咱們先固定一個文件吧!
$filename = 「./01.jpg」;
list($srcWidth,$srcHeight) = getp_w_picpathsize($filename);
如今好了,源圖像的尺寸已經知道了,那麼,第一步也就能夠肯定了,並且,如今咱們發現第二步和第一步的順序也必須調換一下!其代碼以下:
$filename = 「./01.jpg」;
$scalePercent = 0.5;
list($srcWidth,$srcHeight,$imgType) = getp_w_picpathsize($filename);
$destWidth = ceil($srcWidth * $scalePercent);
$destHeight = ceil($srcHeight * $scalePercent);
通過以上的分析,p_w_picpathcopyresampled函數的不少參數就能夠肯定下了,如今就變成了:
p_w_picpathcopyresampled($destImg,$源圖像資源,0,0,0,0,$destWidth,$destHeight,$srcWidth,$srcHeight);
那麼如今的關鍵問題是:如何將源圖像變量資源(resource)類型的變量!
在GD函數庫中,p_w_picpathcreate、p_w_picpathcreatetruecolor是建立一個空白的圖像資源;而p_w_picpathcreatefromgif、p_w_picpathcreatefromjpeg、p_w_picpathcreatefrompng,則是將已經存在的圖像文件變成圖像資源,好了,幹活吧!
$srcImage = p_w_picpathcreatefromjpeg($filename);
好了,如今全部的參數都肯定好了!以下
p_w_picpathcopyresampled($destImg,$srcImg,0,0,0,0,$destWidth,$destHeight,$srcWidth,$srcHeight);
最後,只剩下一個問題,將縮略圖生成文件存儲到磁盤上就OK了!
Imagejpeg($destImg,」./small.jpg」);
Imagedestroy($srcImg);
Imagedestroy($destImg);
最後的代碼以下:
<?php
$filename
= "./01.jpg";
$scalePercent
= 0.5;
list
(
$srcWidth
,
$srcHeight
)
= getp_w_picpathsize($filename);
$destWidth
= ceil($srcWidth * $scalePercent);
$destHeight
= ceil($srcHeight * $scalePercent);
$destImg
= p_w_picpathcreatetruecolor($destWidth,$destHeight);
$srcImg
= p_w_picpathcreatefromjpeg($filename);
p_w_picpathcopyresampled(
$destImg
,
$srcImg
,
0
,
0
,
0
,
0
,
$destWidth
,
$destHeight
,
$srcWidth
,
$srcHeight
);
p_w_picpathjpeg(
$destImg
,
"small.jpg"
);
p_w_picpathdestroy(
$srcImg
);
p_w_picpathdestroy(
$destImg
);
?>
固然如今的這個功能還有一些侷限性,例如源文件不能固定、沒有添加水印效果等,這些,我會在之後的博文中繼續給你們做介紹!