好吧,我以爲我明白這個功能,但我對這一個完整的心理障礙。imagecopy在PHP中進行採樣,有人可以解釋它嗎?
我想從800x536的照片創建大小75x75的裁剪縮略圖。
imagecopyresampled函數有10個可能的參數。我第一次嘗試這個:
// Starting point of crop
$tlx = floor(($width/2) - ($new_width/2)); //finds halfway point of big image and subtracts half of thumb.
$tly = floor(($height/2) - ($new_height/2)); //gets centre of image to be cropped.
imagecopyresampled($tmp_img,$img,0,0,$tlx,$tly,$new_width,$new_height,$orig_width,$orig_height);
這發現在大圖像的中途標記的任何一方,並裁剪出來。或者我想。但它實際上是作物的一部分圖片,並將右側和底部留在黑色(大概是從imagecreatetruecolor更早。
所以我找到了一種方法來做我想做的事但我想讓你解釋它是如何工作的。
我現在有:
//Create thumbnails.
$new_width = 75; //pixels.
$new_height = 75;
if($width > $height) $biggest_side = $width;
else $biggest_side = $height;
//The crop size will be half that of the largest side
$crop_percent = .5;
$crop_width = $biggest_side*$crop_percent;
$crop_height = $biggest_side*$crop_percent;
$c1 = array("x"=>($width-$crop_width)/2, "y"=>($height-$crop_height)/2);
//Create new image with new dimensions to hold thumb
$tmp_img = imagecreatetruecolor($new_width,$new_height);
//Copy and resample original image into new image.
imagecopyresampled($tmp_img,$img,0,0,$c1['x'],$c1['y'],$new_width,$new_height,$crop_width,$crop_height);
這是完全這樣做,縮小圖像,然後裁剪出來的中間,但我的數學是不是很鋒利,還我認爲這絕對是我不充分了解imagecopyresampled功能。
有人可以通過它走過我嗎?參數按參數。特別是最後兩個。最初我輸入了原始圖像的寬度和高度,但是這會進入400和400(最長邊的一半)。對咆哮抱歉。希望我的心中明白這一點很快:)
亞歷
哇非常感謝。因此,您使用end_x和end_y參數作爲停止座標,當手冊(我已經看了很多)說明它是寬度和高度時現在,我現在使用的是,在end_x和end_y中工作的是400x400,所以這意味着它需要從中心切出400x400,然後縮小到75x75? – 2010-08-30 23:59:43
,當它顯示end_x/end_y的「源圖像」時,它就是您想要工作的源圖像的PIECE的結尾用。如果你想縮小整個圖像,那麼它就是原始圖像的高度/寬度。否則,它只是您正在切出的塊的高度/寬度。 – 2010-08-31 01:00:00
對,我即將縮小整個圖像的400片400片,然後取出中間75x75平方米的圖像?我想我明白了。好哇! – 2010-08-31 01:41:29