2012-02-12 125 views
0

如果我有一个图像2048×2048,我希望将图像从顶部1488x1488像素450向下和280个像素从左imagecopyresampled裁剪

是这个正确的代码x.png是2048×2048图像:

<?php 

$imagesrc_location = 'x.png'; 

// Get new sizes 
list($srcwidth, $srcheight) = getimagesize($imagesrc_location); 

$imagedst = imagecreatetruecolor(1488, 1488); 
$imagesrc = imagecreatefrompng($imagesrc_location); 

if (imagecopyresampled($imagedst,$imagesrc,0,0,280,450,1488,1488,2048,2048)) { 
    // Output image 
    header('Content-type: image/png'); 
    imagepng($imagedst); 
} else { 
    echo "Could not resize file"; 

} 

这是一张图片,显示我想要的,灰色部分是裁剪图片。

                                    enter image description here

回答

1

编辑:我认为这个问题是,你的源尺寸会使imagecopyresampled规模下来。这可能适用作物:

imagecopyresampled($imagedst,$imagesrc,0,0,280,450,1488,1488,1488,1488) 

但是看看这里:http://www.johnconde.net/blog/cropping-an-image-with-php-and-the-gd-library/ 我认为,你想要的是:

imagecopy($imagedst,$imagesrc,0,0,280,450,1488,1488) 

http://us3.php.net/manual/en/function.imagecopy.php

http://us3.php.net/manual/en/function.imagecopyresampled.php

+0

它不是为我工作。我给它这个:http://i.min.us/ibvzyAeW9415uv.png它提出了这个:http://i.min.us/ibyi5KbfTglN2P.png – ParoX 2012-02-13 00:11:24

+0

尝试我发布的新代码,并让我知道 – Matt 2012-02-13 04:41:58

+0

奇怪的是'imagecopyresampled($ imagedst,$ imagesrc,0,0,280,450,1488,1488,1488,1488)'和'imagecopyresampled($ imagedst,$ imagesrc,0,0,280,450,2048,2048,2048,2048)'都可以。我永远不会完全理解这个功能。 – ParoX 2012-02-14 16:53:37