2010-04-12 4 views
1

Je rencontre des problèmes en créant une miniature à partir d'une image téléchargée, mon problème estCréation pouce jpg avec php

(i) la qualité (ii) la culture

http://welovethedesign.com.cluster.cwcs.co.uk/phpimages/large.jpg http://welovethedesign.com.cluster.cwcs.co.uk/phpimages/thumb.jpg

Si vous regardez la qualité est très mauvaise et la récolte est prise par le haut et n'est pas un redimensionnement de l'image originale bien que les dimesions signifient que c'est proportionné.

L'original est 1600px large par 1100px élevé.

Toute aide serait appréciée.

$thumb = 
$targetPath."Thumbs/".$fileName; 

    $imgsize = 
getimagesize($targetFile); $image = 
imagecreatefromjpeg($targetFile); 
    $width = 200; //New width of image 
$height = 138; //This maintains 
proportions 

    $src_w = $imgsize[0]; $src_h = 
$imgsize[1]; 



$thumbWidth = 200; $thumbHeight = 
138; // Intended dimension of thumb 

// Beyond this point is simply code. 

$sourceImage = 
imagecreatefromjpeg($targetFile); 
$sourceWidth = imagesx($sourceImage); 
$sourceHeight = imagesy($sourceImage); 

$targetImage = 
imagecreate($thumbWidth,$thumbHeight); 
imagecopyresized($targetImage,$sourceImage,0,0,0,0,$thumbWidth,$thumbWidth,imagesx($sourceImage),imagesy($sourceImage)); 

//imagejpeg($targetImage, 
"$thumbPath/$thumbName"); 
imagejpeg($targetImage, $thumb); 

chmod($thumb, 0755); 
+1

pour une meilleure utilisation de la qualité 'imagecopyresampled()': http://www.php.net/imagecopyresampled –

+0

À peu près la même qualité qu'auparavant, je fais principalement du développement CF maintenant, mais je me souviens d'une façon de le faire que vous permet d'insérer la qualité – Ross

+0

Ne prenez pas cela dans le mauvais sens, mais l'exemple de code que vous avez collé est un gâchis. Vous devriez essayer d'enlever les peluches et voir si cela résout un problème, du moins si ce n'est pas le cas, il sera plus facile pour les autres de voir le problème tout de suite. – zaf

Répondre

1

Vous » re en utilisant la mauvaise variable pour la hauteur de l'image.

imagecopyresized($targetImage,$sourceImage,0,0,0,0,$thumbWidth,$thumbWidth,imagesx($sourceImage),imagesy($sourceImage)); 

devrait être:

imagecopyresized($targetImage,$sourceImage,0,0,0,0,$thumbWidth,$thumbHeight,imagesx($sourceImage),imagesy($sourceImage)); 

Cela devrait améliorer la qualité de l'image, mais vous devez utiliser imagecopyresampled pour le redimensionnement et utiliser le paramètre de qualité lorsque vous utilisez la fonction imagejpeg() lors de l'enregistrement sur le disque.

+0

merci a obtenu un résultat acceptable de cela. – Ross

+0

@Ross, si cette réponse a résolu votre problème l'accepter comme la bonne réponse –

+0

Avec un upvote ou deux! ;) – zaf

0

Vous ne vous inquiétez pas si vous souhaitez utiliser le Thumbnailer.

$th=new Thumbnailer("your-photo.jpg"); 
$th->thumbSymmetricWidth(200)->save("your-thumb.jpg"); 

La qualité est superbe. Vous pouvez également arrondir les coins.