2011-01-08 32 views
5
imagecopyresized (resource $dst_image , resource $src_image , int $dst_x , int $dst_y , int $src_x , int $src_y , int $dst_w , int $dst_h , int $src_w , int $src_h) 

這就是我想做的事:我這是在大小600x1000px的圖像,我想創建一個拇指是該圖像調整後的100x100px 300x500px,拇指正方形左上角的x座標應爲100(src x)和120(src y)。imagecopyresampled調整大小和裁剪圖像 - 沒有返回預期的結果

據我從手動了解,該命令應

$dst_image = imagecreatetruecolor(100,100); 
$src_image = imagecreatefromjpeg('/home/sandbox/imagetoresize.jpg'); 
imagecopyresized ($dst_image, $src_image, 0, 0, 100, 120, **300 , 500 , 600 , 1000**) 

它裁剪圖像就好了,但它沒有正確調整其大小。我從來沒有達到我在圖像編輯器(GIMP)中看到的效果。我究竟做錯了什麼?我確認所有的數字都是正確的,但無論我做什麼,它總是上下移動。

+0

你在你的源圖像在做什麼被切割peice的從左-X = 100個像素到向右-X = 400個像素了600像素的寬度,所以它不居中。然後使用1000像素的總高度中的120像素的頂部y像素和620像素的底部y像素,因此它不以那種方式居中。 – dqhendricks 2011-01-08 02:09:11

+0

然後,在您的目標圖像中,您將從左上角開始,然後將300x500像素的圖像打印到100x100的圖像中,因此我想像的右側200像素和最下面的400像素會被截斷。 – dqhendricks 2011-01-08 02:12:19

+0

向我們展示了來自圖像編輯器的所需源圖像和目標圖像,也許我們將更清楚地瞭解您正在嘗試執行的操作。 – dqhendricks 2011-01-08 02:16:03

回答

10

下面是我使用PHP GD編寫的函數的鏈接,以將任意大小的圖像調整爲任意大小。它有一個解釋,並且可以使用裁剪到適合或letterboxing來適應目標縱橫比。

http://www.spotlesswebdesign.com/blog.php?id=1

更新

它應該看起來更像這一點。

$dst_image = imagecreatetruecolor(100,100); 
$src_image = imagecreatefromjpeg('/home/sandbox/imagetoresize.jpg'); 
imagecopyresized ($dst_image, $src_image, 0, 0, 100, 120, 100, 100, 400, 400); 

從源頭獲取400x400平方,並將其複製到目標中的100x100平方。源廣場的左上角是100 x和120 y。 x和y表示左上角的像素數量。

3

是的,這固定好了。

對於Google員工:我基本上需要做的是將源寬度和源高度鏈接到我將在源圖像中裁切的區域的實際寬度和高度。這意味着代碼需要的是:

imagecopyresized ($dst_image, $src_image, 0, 0, 200, 240, 100, 100, 200, 200); 

所以,變量實際上指的是以下幾點: $從src_x =的X原廣場的左上點的座標。由於原始尺寸是拇指要從中提取的尺寸的兩倍,因此這將是200((ori​​ginal_width/resized_width)* x)。

$ src_y =同樣的事情,但與y座標。

$ dst_w =所生成的縮略圖的寬度 - 100

$ dst_h =所生成的縮略圖的高度 - 100

$ src_w =的區域的寬度,我會從作物原((ori​​ginal_width/resized_width)* $ dst_w)

$ src_h =該區域的高度,我會從原來的((ori​​ginal_width/resized_width)* $ dst_h)作物


dqhendricks:非常感謝您的幫助,我非常感謝。幾個小時以來,我一直在爲此撓頭。