PHP中的图像裁剪产生空白结果

问题描述:

我只是试图使用PHP裁剪JPEG图像(不缩放)。这是我的功能,以及输入。PHP中的图像裁剪产生空白结果

function cropPicture($imageLoc, $width, $height, $x1, $y1) { 
    $newImage = imagecreatetruecolor($width, $height); 

    $source = imagecreatefromjpeg($imageLoc); 
    imagecopyresampled($newImage,$source,0,0,$x1,$y1,$width,$height,$width,$height); 
    imagejpeg($newImage,$imageLoc,90); 
} 

当我把它作为follows-- cropPicture('image.jpg', 300, 300, 0, 0) --the功能正常完成,但我留下了一个黑色的形象,是300×300像素(换句话说,一个空白的画布)。我是否传递了错误的观点?

图像存在并且是可写的。

作为sobedai的答案的补充:在cropPicture()中使用的那些函数的任何都可能失败。您必须测试每个的返回值。如果发生错误,它们将返回false,并且您的功能无法继续(正确)。

function cropPicture($imageLoc, $width, $height, $x1, $y1) { 
    $newImage = imagecreatetruecolor($width, $height); 
    if (!$newImage) { 
    throw new Exception('imagecreatetruecolor failed'); 
    } 

    $source = imagecreatefromjpeg($imageLoc); 
    if (!$source) { 
    throw new Exception('imagecreatefromjpeg'); 
    } 

    $rc = imagecopyresampled($newImage,$source,0,0,$x1,$y1,$width,$height,$width,$height); 
    if (!$rc) { 
    throw new Exception('imagecopyresampled'); 
    } 

    $rc = imagejpeg($newImage,$imageLoc,90); 
    if (!$rc) { 
    throw new Exception('imagejpeg'); 
    } 
} 

编辑:您可能也有兴趣http://docs.php.net/error_get_last。示例脚本中的异常消息对您没有帮助...

+0

非常感谢。从现在开始,我将开始编码。问题出在调用'cropPicture()'的函数中。所以为了将来的参考,我上面的代码实际上工作! – 2010-03-28 06:34:34

+0

但请不要抛出异常_everywhere_ ;-)你可以轻易过度使用它们。见http://*.com/questions/77127/when-to-throw-an-exception和http://*.com/questions/1744070/why-should-exceptions-be-used-conservatively – VolkerK 2010-03-28 11:41:52

几件事情:

保存

其中之一不能正常工作的返回值imagecopyresampled和imagejpeg,检查哪个是假的,这将缩小它。

乍一看,我会先看看读写权限。