Bonsoir à tous,
Je viens de réaliser un code permettant l'upload de fichier images en PHP. Le script, dans un premier temps, redimensionne l'image de sorte à ce qu'elle ne dépasse pas 700 pixels (de largeur ou hauteur). Ensuite, le script réalise une copie carrée de l'image, de 100*100 pixels. Tout fonctionne normalement pour la majorité des images. Cependant, j'ai un soucis pour ce type d'image :
http://widjoo-pro.com/test/c51ce410c124a10e0db5e4b97fc2af39.png
Voici le rendu, après transfert :
http://widjoo-pro.com/test/c51ce410c124a10e0db5e4b97fc2af39_square.png
L'idéal serait d'avoir un fond blanc autour ... j'ai bien essayé imagefill(), mais celà supprime également les zones noires qu'il y a sur l'image initiale ...
Voici un aperçu du script, que vous pouvez visualiser et tester ici : http://widjoo-pro.com/test.php (résultat aux adresses des deux images indiquées ci-dessus)
Savez-vous comment régler ce soucis ?
Merci d'avance
Modifié par Gaylord.P (14 Mar 2011 - 23:27)
Je viens de réaliser un code permettant l'upload de fichier images en PHP. Le script, dans un premier temps, redimensionne l'image de sorte à ce qu'elle ne dépasse pas 700 pixels (de largeur ou hauteur). Ensuite, le script réalise une copie carrée de l'image, de 100*100 pixels. Tout fonctionne normalement pour la majorité des images. Cependant, j'ai un soucis pour ce type d'image :
http://widjoo-pro.com/test/c51ce410c124a10e0db5e4b97fc2af39.png
Voici le rendu, après transfert :
http://widjoo-pro.com/test/c51ce410c124a10e0db5e4b97fc2af39_square.png
L'idéal serait d'avoir un fond blanc autour ... j'ai bien essayé imagefill(), mais celà supprime également les zones noires qu'il y a sur l'image initiale ...
Voici un aperçu du script, que vous pouvez visualiser et tester ici : http://widjoo-pro.com/test.php (résultat aux adresses des deux images indiquées ci-dessus)
$image = 'test/'.$fileUrl.'.'.$fileType.'';
list($imageWidth, $imageHeight) = getimagesize($image);
if($fileType == 'gif') {
$source = imagecreatefromgif($image);
}
elseif($fileType == 'jpeg' OR $fileType == 'jpg') {
$source = imagecreatefromjpeg($image);
}
elseif($fileType == 'png') {
$source = imagecreatefrompng($image);
}
if($imageWidth <= 100 AND $imageHeight <= 100) {
$xStart = -50 + ($imageWidth / 2);
$yStart = -50 + ($imageHeight / 2);
$sourceWidth = 100;
}
else {
if($imageWidth >= $imageHeight){
$sourceWidth = $imageHeight;
$xStart = ($imageWidth / 2) - ($sourceWidth / 2);
$yStart = 0;
}
elseif($imageWidth <= $imageHeight){
$sourceWidth = $imageWidth;
$yStart = ($imageHeight / 2) - ($sourceWidth / 2);
$xStart = 0;
}
else {
$sourceWidth = $imageWidth;
$xStart = 0;
$yStart = 0;
}
}
$destination = imagecreatetruecolor(100, 100);
imagecopyresampled($destination, $source, 0, 0, $xStart, $yStart, 100, 100, $sourceWidth, $sourceWidth);
if($fileType == 'gif') {
imagegif($destination, 'test/'.$fileUrl.'_square.gif');
}
elseif($fileType == 'jpeg' OR $fileType == 'jpg') {
imagejpeg($destination, 'test/'.$fileUrl.'_square.'.$fileType.'');
}
elseif($fileType == 'png') {
imagepng($destination, 'test/'.$fileUrl.'_square.png');
}
Savez-vous comment régler ce soucis ?
Merci d'avance

Modifié par Gaylord.P (14 Mar 2011 - 23:27)