2010-03-28 7 views
3

J'essaie simplement de rogner une image JPEG (pas de mise à l'échelle) en utilisant PHP. Voici ma fonction, avec les entrées.Le recadrage d'image en PHP produit un résultat vide

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); 
} 

Quand je l'appelle comme follows-- cropPicture('image.jpg', 300, 300, 0, 0) --Le fonction complète correctement, mais je me retrouve avec une image noire qui est 300x300 px (autrement dit, une toile vierge). Est-ce que je passe dans les mauvais arguments?

L'image existe et est inscriptible.

Répondre

3

En complément de la réponse de sobedai: Toute fonction de ces fonctions que vous utilisez dans cropPicture() peut échouer. Vous devez tester la valeur de retour de chacun et chacun. En cas d'erreur, ils renvoient false et votre fonction ne peut pas continuer (correctement).

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'); 
    } 
} 

modifier: Vous pourriez aussi être intéressé par http://docs.php.net/error_get_last. Les messages d'exception dans le script d'exemple ne sont pas très utiles ...

+0

Merci beaucoup. Je vais commencer à coder comme ça à partir de maintenant. Le problème était dans la fonction appelée 'cropPicture()'. Donc, pour référence future, mon code ci-dessus fonctionne réellement! –

+0

Mais s'il vous plaît ne pas jeter des exceptions _everywhere_ ;-) Vous pouvez facilement les abuser. voir http://stackoverflow.com/questions/77127/when-to-throw-an-exception et http://stackoverflow.com/questions/1744070/why-should-exceptions-be-used-conservation – VolkerK

2

Quelques choses:

enregistrer les valeurs de retour pour imagecopyresampled et imagejpeg

L'un de ceux qui ne fonctionne pas correctement, vérifier ce qui est faux et qui le réduire.

À première vue, je regarderais d'abord les autorisations de lecture et d'écriture.

Questions connexes