Lors de la génération de codes-barres ou de codes QR, le graphique est généralement composé de nombreuses lignes droites et carrés. Pour rendre ces graphiques plus lisses sur des pages Web ou des impressions et réduire les bords de déchaînement, vous pouvez utiliser la fonction Imageantalias de PHP pour activer l'anti-aliasage pour les images. Cet article introduira l'utilisation de la fonction Imageantialias et combinera des exemples de génération de code-barres ou de code QR pour démontrer comment obtenir une sortie graphique plus claire.
Imageantalias est une fonction de la bibliothèque PHP GD pour activer ou désactiver l'antialiasage pour les lignes dessinées. Lorsque l'anti-aliasage est activé, les bords des lignes dessinés deviennent plus lisses, réduisant l'effet de déchaînement.
Le prototype de fonction est le suivant:
bool imageantialias ( resource $image , bool $enabled )
$ Image : Ressource d'image
$ activé : s'il faut permettre l'anti-aliasing, vrai activer, faux désactiver
Un code-barres ou un code QR est généralement un graphique composé de blocs ou de lignes de pixels, et aura déchaîné lorsqu'il est agrandi ou réduit. En permettant l'anti-aliasing, les bords peuvent être plus doux, améliorant ainsi les effets visuels, en particulier lors de l'impression.
Cependant, l'imageantialias a des effets évidents sur les lignes et les polygones, et a des effets limités sur les blocs de pixels individuels. Par conséquent, dans la génération de code QR, il est souvent utilisé avec d'autres techniques de traitement de lissage.
Ci-dessous, utilisez la fonction PHP GD pour créer un schéma de rayures de code-barres simple et activer l'anti-aliasing à l'aide d'Imageantalias .
<?php
// Créer une image vierge
$width = 200;
$height = 80;
$image = imagecreatetruecolor($width, $height);
// Attribuer des couleurs
$white = imagecolorallocate($image, 255, 255, 255);
$black = imagecolorallocate($image, 0, 0, 0);
// Fond rempli de blanc
imagefill($image, 0, 0, $white);
// Activer l'anti-aliasing
imageantialias($image, true);
// Rayures noires pour dessiner les codes à barres(Exemple simple)
for ($x = 10; $x < 190; $x += 20) {
imageline($image, $x, 10, $x, 70, $black);
}
// Image de sortie
header('Content-Type: image/png');
imagepng($image);
// Libérer les ressources
imagedestroy($image);
?>
Dans cet exemple, nous créons une image 200x80, dessinant certaines lignes noires verticales avec des intervalles de 20 pixels. Après avoir appelé ImageeANtialias ($ Image, True) , les bords de la ligne deviendront plus lisses.
Les codes QR sont généralement représentés par des blocs de pixels, et les Imageantalias de la bibliothèque GD ont des effets limités sur le dessin de pixels unique. Généralement, l'effet "lisse" est obtenu en zoomant sur l'image du code QR, puis en réduisant la taille cible. De plus, vous pouvez également utiliser ImageFildRectangle pour dessiner des pixels plus grands lors du dessin des codes QR et les combiner avec des lignes anti-aliasing pour améliorer la douceur visuelle.
L'exemple suivant montre comment créer une version plus grande du diagramme de code QR, puis le rétrécir pour obtenir un certain effet anti-aliasing.
<?php
// Supposons que les données de code QR ont été générées,Matrice de code QR de simulation simple
$matrix = [
[1,0,1,1,0,1,0,0],
[0,1,0,1,1,0,1,0],
[1,1,1,0,0,1,0,1],
[0,0,1,1,0,0,1,1],
[1,0,0,1,1,1,0,0],
[1,1,0,0,1,0,1,0],
[0,1,1,1,0,1,0,1],
[1,0,0,0,1,1,1,0],
];
$scale = 10; // Agrandir le rapport
$size = count($matrix) * $scale;
$image = imagecreatetruecolor($size, $size);
$white = imagecolorallocate($image, 255, 255, 255);
$black = imagecolorallocate($image, 0, 0, 0);
imagefill($image, 0, 0, $white);
imageantialias($image, true);
for ($y = 0; $y < count($matrix); $y++) {
for ($x = 0; $x < count($matrix[$y]); $x++) {
if ($matrix[$y][$x] == 1) {
// Dessiner des blocs grossiers
imagefilledrectangle(
$image,
$x * $scale,
$y * $scale,
($x + 1) * $scale - 1,
($y + 1) * $scale - 1,
$black
);
}
}
}
// Réduire l'image pour obtenir l'effet anti-aliasing
$finalWidth = count($matrix) * 3; // Rétrécir3Double
$finalHeight = $finalWidth;
$finalImage = imagecreatetruecolor($finalWidth, $finalHeight);
imagecopyresampled(
$finalImage,
$image,
0, 0, 0, 0,
$finalWidth, $finalHeight,
$size, $size
);
header('Content-Type: image/png');
imagepng($finalImage);
imagedestroy($image);
imagedestroy($finalImage);
?>
Ce code a été créé en créant un diagramme de blocs de code QR à 10 fois, puis en rétrécissant à 3 fois la taille, et en utilisant un rééchantillonnage de haute qualité de haute qualité Resamped pour obtenir un certain effet anti-aliasing.
Imageantalias est principalement utilisé pour permettre l'anti-aliasage des lignes dans les images pour rendre les lignes plus lisses.
Pour les codes à barres, l'activation de l'imageantalias a considérablement amélioré les bords de la ligne droite.
Pour les codes QR, l'activation d'imageantalias a simplement un effet limité et combine généralement la méthode de zoom vers et sortie pour obtenir des graphiques plus lisses.
Combinée à d'autres fonctions de traitement d'image de PHP GD, la qualité visuelle des codes-barres et des codes QR peut être efficacement améliorée.