2010-12-14 9 views
2

J'ai mis en place un scritp qui télécharge un JPEG puis recadrer dans une vignette, mais certains utilisateurs éprouve une image noire, et honnêtement, je ne sais pas ce qu'ils téléchargent, peut-être un jpeg avec un format de compression non compatible avec les librairies php?PHP: image noire lors du recadrage en utilisant php

ceci est mon code simple ... eveything fonctionne très bien lorsque je tente avec mes photos si je ne peux pas undestand pourquoi certains utilisateurs ont une image noire sous forme de vignette résultant ...

$img_r = imagecreatefromjpeg($src); 
$dst_r = ImageCreateTrueColor($targ_w, $targ_h); 
imagecopyresampled($dst_r,$img_r,0,0,$x,$y,$targ_w,$targ_h, $w, $h);  
imagejpeg($dst_r, $output_filename, $jpeg_quality); 

MISE À JOUR: J'ai trouvé le bogue: en gros cela arrive quand un utilisateur essaie de télécharger une image qui a un nom de fichier qui contient les espaces% 20 ... donc il y a quelque chose de mal dans la façon dont je passe le nom de fil de javascriptajax à un script en php .. .aargg..so dumb

+0

Vous devez d'abord valider que c'est une image. Faites-le avec 'getimagesize()' – metrobalderas

Répondre

5

Parfois, vous obtenez du noir lorsque le recadrage tente de déplacer l'image vers un emplacement situé à l'extérieur de l'image.

_________ 
|  | 
|  | ____ 
| 0_o | | | 
| | | |__| 
|_______| 

Vérifier que la largeur, la hauteur, et x/y sont des nombres de compensation correcte à l'intérieur de l'image et que le calcul ne sont pas les déplacer pour être ouside la zone d'image.

+0

c'est aussi intéressant! bon à savoir ... – Francesco

+0

Voudriez-vous regarder ma question http://stackoverflow.com/questions/37957089/issue-with-cropping-picture-from-mysql-database-using-php-image-shows-up-black ? noredirect = 1 # comment63362139_37957089 ayant le même problème – skyguy

Questions connexes