6
votes

PHP imagejpeg qualité puets: pourquoi?

IM Prenant des téléchargements d'image sur un site Web et modifier les images sur les vignettes qui s'intègrent sur un carré blanc de 100 x 100. Le problème est que les images ressemblent à des anti-alias correctement. Images dimensionnées dans Photoshop Look lisse, mais celles-ci croquantes, comme super aiguisées.

Jetez un coup d'œil à Ces échantillons , montrant la pleine taille sur la gauche et les vignettes à droite (vue sur 100%). La photo ressort ridiculement aiguisée, mais beaucoup de gens pourraient ne pas être dérangés par elle. Le dessin est bien que waaay inacceptable. Ces lignes courbes ne font que parler d'anti-alias et devenaient des lignes pointillées.

IM à l'aide de ImageJPG () et la qualité JPG que je choisis n'a aucun effet sur la croquance. Heres une partie du code qui l'entoure: xxx

aucune idée? est-ce normal? Merci!


0 commentaires

3 Réponses :


6
votes

changer la dernière ligne à:

imagejpeg ($ tmp_img, $ thumbfullpath, 100);

Voir: http://us4.php.net/manual/fr/ fonction.Imagejpeg.php

Aussi, essayez d'utiliser ImageCopyResamped () plutôt que ImageCopyResized ()

Voir: http://us4.php.net/manual/fr/ fonction.imagecyresampled.php


8 commentaires

Il n'y aura pas une grande différence entre 90 et 100. En outre, je pense que c'est plus l'opération de mise à l'échelle que l'opération de sauvegarde qui gaspille le résultat. En outre, OP a dit que la modification de la qualité n'améliore rien.


Droite, mais cela peut aider ... 10% ... Imagecopyresamplé () a travaillé merveille pour moi dans le passé.


d'accord, "essayez d'utiliser ImageCopyResampled () plutôt que de l'imagecyrésized ()"


@Op si cela n'est pas résolu par ceci, veuillez montrer des images d'exemple.


Je vais essayer d'essayer un peu plus tard, quand j'ai tapoté le jeu actuel de flammes brûlant mon bureau. Merci beaucoup - ImagecopyResampled () sonne prometteuse!


Je ne pouvais pas résister à l'essayer de très vite, et ça marche! Vous gars rooooooCkckkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk Kinda me fait me demander pourquoi quiconque utiliserait ImageCopyResized, ou pourquoi il existe même. Merci!


ImageCopyResized utilise probablement un échantillonnage simple le plus proche de voisin qui donne une qualité médiocre. Des algorithmes d'échelle plus précis tels que ImagecopyRésamplé Appliquer des filtres à passe basse (flou) avant l'échantillonnage, cela fait disparaître les pointes de la fréquence HI en tambnail.


En fait, ImageJPEG () semble écrire uniquement des images 72PPI, même si vous chargez une image 300PPI, ajoutez du texte et enregistrez-la.



14
votes

Vous voudrez peut-être essayer ImageCopyResamplé au lieu de ImageCopyResized . Il est plus lent mais utilise un algorithme plus sophistiqué pour déterminer la couleur de chaque pixel de la nouvelle image.


0 commentaires

0
votes
$imagepath = /path/to/image.jpg; 
$image = imagecreatefromjpeg($imagepath); 
header('Content-Type: image/jpeg'); 
imagejpeg($image, NULL, 100); 
Last line is so important!

0 commentaires