améliorer la qualité de PHP GD images générées
je vais commencer la construction d'un générateur de carte en PHP à l'aide de la librairie GD. j'ai généré des images à l'aide de la lib mais ils n'ont pas une bonne qualité. Je veux juste savoir qu'est-il un moyen d'améliorer la qualité des images.
L'image générée est:
et le code que j'ai fait est:
<?php
$canvas = imagecreate(800, 350);
imagecolorallocate($canvas, 255, 255, 255);
$pink = imagecolorallocate($canvas, 255, 105, 180);
$white = imagecolorallocate($canvas, 255, 255, 255);
$green = imagecolorallocate($canvas, 132, 135, 28);
imagestring( $canvas, 20, 290, 25, "Quality is not the best :(", $green );
function drawlinebox($x1, $y1, $x2, $y2, $height, $color){
global $canvas;
imagesetthickness ( $canvas, 1 );
for ($i=1; $i < $height; $i++){
imageline( $canvas, $x1, $y1, $x2, $y2, $color );
$y1++; $y2++;
}
}
drawlinebox(20, 20, 780, 300, 30, $green);
drawlinebox(20, 300, 780, 20, 30, $pink);
header('Content-Type: image/jpeg');
imagejpeg($canvas);
imagedestroy($canvas);
?>
Essayez d'utiliser
Avez-vous essayé l'antialiasing fonctions?
imagepng
au lieu de imagejpeg
. PNG (header('Content-Type: image/png');
) peut être un meilleur format.Avez-vous essayé l'antialiasing fonctions?
OriginalL'auteur Ameer | 2011-09-14
Vous devez vous connecter pour publier un commentaire.
imagejpeg
[docs] prend un argument en faveur de la qualité de l'image. La valeur par défaut est75
, mais vous pouvez l'augmenter jusqu'à un maximum de100
. Par exemple:Toutefois, pour les graphiques générés avec beaucoup d'continu des couleurs et des lignes nettes, JPEG n'est probablement pas le meilleur choix. Les png sont plus bien-adapté à ces sortes d'images, et sera probablement vous donner une qualité parfaite à une taille plus petite.
imagepng
[docs] a quelques options, mais les valeurs par défaut devraient être fine:Vous utilisez
imagecreate
[docs] pour rendre l'image dans la première place. Cela crée une "palette" basé sur l'image: celui qui ne pouvez utiliser qu'un nombre limité de couleurs. Cela correspond à la moins bonne qualité que d'un GIF ou un format PNG 8 bits, mais parce que vous n'êtes pas à l'aide de ces formats, vous devez utiliserimagecreatetruecolor
[docs] à la place. Jusqu'à présent, votre image est très simple et cela ne peut pas faire une différence, mais n'aura d'importance si vous êtes de générer davantage d'images complexes.Si vous faites ces deux changements, vos images seront assurez-vous d'avoir une qualité parfaite.
imagecreatetruecolor
au lieu deimagecreate
.Bonne suggestion, j'ai ajouté qu'à mon post.
je vous remercie beaucoup. PNG est semble faire un bon travail.
Belle, heureuse d'avoir pu vous aider. Si vous pensez que votre problème a été résolu, vous devriez envisager de marquer le plus de réponse utile comme "accepté" en cliquant sur le gris de la coche à côté de lui.
imagecreatetruecolor() retourne le noir de l'image 🙁
OriginalL'auteur Jeremy
La perte de qualité est à cause de la Compression JPEG (qui est alossy algorithme de compression).
Si vous voulez la meilleure qualité, utilisez le format PNG au lieu de jpeg.
Et pour un générateur de carte je recommanderais PNG, il y a de nombreuses zones de couleur qui sera compressé tout un lot par PNG.
Seulement penser à utiliser le format JPEG si la taille des images PNG est beaucoup trop grande.
Dans ce cas, comme jeremy, a déclaré l'utilisation de la qualité de l'argument de
imagejpeg
..Je voudrais expérimenter avec différentes qualités de trouver une taille appropriée, la qualité de l'échange. Personnellement, j'ai trouvé une qualité de 90 pour être acceptable dans la plupart des cas, mais vous pouvez jusqu'à 100 si vous le souhaitez.
OriginalL'auteur danishgoel