Lors du traitement des images en PHP, la fonction ImageeANtialias () est souvent utilisée pour améliorer l'effet de bord des lignes de dessin et des graphiques, ce qui le rend plus lisse et plus naturel. De nombreux développeurs se soucieront de savoir s'il est préférable d'appeler la fonction ImageeANtialias () avant la mise à l'échelle ou après la mise à l'échelle? Cet article discutera de ce problème en détail et utilise des exemples de code pour illustrer l'impact spécifique de la fonction ImageeAralias () sur la qualité d'image avant et après la mise à l'échelle.
Imageantalias () est une fonction de la bibliothèque PHP GD pour activer ou désactiver les effets antialiasants. L'anti-aliasage est une technologie de traitement d'image utilisée pour réduire la forme déchiquetée des bords du graphique et rendre les bords plus lisses.
bool imageantialias(resource $image, bool $enabled);
$ Image : Poignée de ressources d'image.
$ activé : réglé sur true pour activer l'anti-aliasing, false pour désactiver.
Il convient de noter que l'imageantialias () est efficace pour toutes les lignes et formes dessinées, mais n'affecte pas directement l'algorithme de mise à l'échelle de l'image.
Lors de la mise à l'échelle d'une image, les étapes habituelles sont:
Activez d'abord l'anti-aliasing, puis zoomez sur l'image.
Échec de l'image d'abord, puis activez l'anti-aliasing.
Ces deux méthodes auront des différences dans les résultats réels.
<?php
// Créer une image originale
$src = imagecreatefromjpeg('http://m66.net/images/sample.jpg');
// Créer une image de zoom cible
$dst = imagecreatetruecolor(200, 150);
// Activer l'anti-aliasing
imageantialias($dst, true);
// Effectuer le zoom Copie
imagecopyresampled($dst, $src, 0, 0, 0, 0, 200, 150, imagesx($src), imagesy($src));
// Image de sortie
header('Content-Type: image/jpeg');
imagejpeg($dst);
// Libérer les ressources
imagedestroy($src);
imagedestroy($dst);
?>
<?php
// Créer une image originale
$src = imagecreatefromjpeg('http://m66.net/images/sample.jpg');
// Créer une image de zoom cible
$dst = imagecreatetruecolor(200, 150);
// Effectuer le zoom Copie
imagecopyresampled($dst, $src, 0, 0, 0, 0, 200, 150, imagesx($src), imagesy($src));
// Activer l'anti-aliasing
imageantialias($dst, true);
// Image de sortie
header('Content-Type: image/jpeg');
imagejpeg($dst);
// Libérer les ressources
imagedestroy($src);
imagedestroy($dst);
?>
Activez l'anti-aliasing avant de zoomer <br> Ce paramètre affecte principalement les opérations de dessin graphique ultérieures, telles que les lignes de dessin, les rectangles, les cercles, etc. Il n'optimisera pas directement la qualité de l'échelle de l'image, car ImageCopy Resampled () elle-même est déjà basée sur l'algorithme anti-aliasage de rééchantillonnage.
Si vous devez dessiner des graphiques lisses après l'échelle, vous pouvez activer l'anti-aliasing à l'avance.
Allumez l'anti-aliasing après le zoom <br> Il n'y a pas d'amélioration significative de la qualité de mise à l'échelle de l'image pure. Parce que l'anti-aliasage n'affecte que le traitement des lignes par la fonction de dessin, mais n'a aucun impact direct sur la mise à l'échelle des pixels de l'image entière.
En résumé, ImageeANTIALIAS () n'a aucun impact direct sur l'opération de mise à l'échelle elle-même et agit principalement sur les actions de dessin ultérieures. Si vous avez besoin d'améliorer la qualité de l'image à l'échelle, vous devez utiliser des fonctions de mise à l'échelle de haute qualité telles que ImageCopyResampled () au lieu de compter sur ImageeRalias () .
Après avoir zoom, si vous avez toujours besoin de dessiner des graphiques vectoriels (lignes, bordures), il est plus approprié d'activer ImageeANtiAnias () .
Lors de la mise à l'échelle uniquement, il vous suffit d'utiliser ImageCopyResampled () , et d'atteindre ImageeANTIALIAS () est limité à une amélioration de la qualité.