2010-03-28 3 views
3

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) 고마웠다 기능이 제대로 완료로 부르지 만, 나는 (즉, 빈 캔버스에) 최대 300x300 픽셀입니다 검은 색 이미지로 남아있을 때. 잘못된 주장을 전달하고 있습니까?

이미지가 존재하며 쓰기 가능합니다.

답변

3

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()'를 호출하는 함수에서 발생했습니다. 그래서 나중에 참조하기 위해 위의 코드가 실제로 작동합니다! –

+0

하지만 예외를 _everywhere_ ;-) 던지지 마십시오. 쉽게 남용 할 수 있습니다. http://stackoverflow.com/questions/77127/when-to-throw-an-exception 및 http://stackoverflow.com/questions/1744070/why-should-exceptions-be-used-conservatively를 참조하십시오. – VolkerK

2

몇 가지 : 사람들의

하나가 제대로 작동하지 않는 반환 imagecopyresampled 값과 imagejpeg 저장

, 거짓 인 확인하고 그 범위를 좁힐 것입니다.

처음 보면 읽기만하고 쓰기 권한을 먼저 보았습니다.

관련 문제