Bei der Erzeugung von Barcodes oder QR -Codes besteht der Diagramm normalerweise aus vielen geraden Linien und Quadraten. Damit diese Grafiken auf Webseiten oder Drucken reibungsloser erscheinen und gezackte Kanten reduzieren können, können Sie PHPs ImageAntialias -Funktion verwenden, um Anti-Aliasing für Bilder zu ermöglichen. In diesem Artikel wird die Verwendung der Imagesantialias -Funktion eingeführt und Beispiele für Barcode- oder QR -Codegenerierung kombiniert, um zu demonstrieren, wie eine klarere grafische Ausgabe erzielt werden kann.
Imagesantialias ist eine Funktion in der PHP -GD -Bibliothek, um Antialiasing für gezogene Linien zu aktivieren oder zu deaktivieren. Wenn Anti-Aliasing aktiviert ist, werden die Ränder der gezogenen Linien glatter, was den zackigen Effekt verringert.
Der Funktionsprototyp lautet wie folgt:
bool imageantialias ( resource $image , bool $enabled )
$ Bild : Bildressource
$ aktiviert : Ob das Anti-Aliasing, true Enable, falsche Deaktivierung aktiviert werden soll
Ein Barcode- oder QR -Code ist normalerweise ein Diagramm, das aus Pixelblöcken oder -zeilen besteht, und hat beim Vergrößerung oder reduziert. Durch die Aktivierung von Anti-Aliasing können die Kanten weicher sein, wodurch visuelle Effekte verbessert werden, insbesondere beim Druck.
Imagesantialias hat jedoch offensichtliche Auswirkungen auf Linien und Polygone und nur begrenzte Auswirkungen auf einzelne Pixelblöcke. Daher wird es bei der Erzeugung von QR -Code häufig mit anderen Glättungsverarbeitungstechniken verwendet.
Im Folgenden erstellen Sie die PHP-GD-Funktion, um ein einfaches Barcode-Streifendiagramm zu erstellen und Anti-Aliasing unter Verwendung von Imagesantialias zu aktivieren.
<?php
// Erstellen Sie ein leeres Bild
$width = 200;
$height = 80;
$image = imagecreatetruecolor($width, $height);
// Farben zuweisen
$white = imagecolorallocate($image, 255, 255, 255);
$black = imagecolorallocate($image, 0, 0, 0);
// Gefüllter Hintergrund mit Weiß
imagefill($image, 0, 0, $white);
// Anti-Aliasing ermöglichen
imageantialias($image, true);
// Schwarze Streifen zum Zeichnen von Barcodes(Einfaches Beispiel)
for ($x = 10; $x < 190; $x += 20) {
imageline($image, $x, 10, $x, 70, $black);
}
// Ausgabebild
header('Content-Type: image/png');
imagepng($image);
// Ressourcen frei machen
imagedestroy($image);
?>
In diesem Beispiel erstellen wir ein 200x80 -Bild und zeichnen einige vertikale schwarze Linien mit 20 Pixel -Intervallen. Nach dem Aufrufen von Imagesantialias ($ image, true) werden die Kanten der Linie reibungsloser.
QR -Codes werden normalerweise durch Pixelblöcke dargestellt, und die Imagesantialien der GD -Bibliothek haben nur begrenzte Auswirkungen auf die einzelne Pixelzeichnung. Im Allgemeinen wird der "glatte" Effekt erreicht, indem das QR -Code -Image und dann die Zielgröße verringert wird. Darüber hinaus können Sie imageFilldRectangle beim Zeichnen von QR-Codes größere Pixel verwenden und mit Anti-Aliasing-Linien kombinieren, um die visuelle Glätte zu verbessern.
Das folgende Beispiel zeigt, wie eine größere Version des QR-Codediagramms erstellt und dann ein bestimmter Anti-Aliasing-Effekt erzielt wird.
<?php
// Angenommen, QR -Codedaten wurden generiert,Einfache Simulation QR -Code -Matrix
$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; // Vergrößern Sie das Verhältnis
$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) {
// Zeichnen Sie vergrößerte Blöcke
imagefilledrectangle(
$image,
$x * $scale,
$y * $scale,
($x + 1) * $scale - 1,
($y + 1) * $scale - 1,
$black
);
}
}
}
// Reduzieren Sie das Bild, um einen Anti-Aliasing-Effekt zu erzielen
$finalWidth = count($matrix) * 3; // Schrumpfen3Doppelt
$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);
?>
Dieser Code wurde erstellt, indem ein 10-faches QR-Code-Block-Diagramm erstellt, dann auf die dreifache Größe schrumpft und die qualitativ hochwertige Resampling von ImageCopyresampled verwendet wird, um einen bestimmten Anti-Aliasing-Effekt zu erzielen.
Imagesantialias wird hauptsächlich verwendet, um die Anti-Aliasing von Linien in Bildern zu ermöglichen, um Linien reibungsloser zu machen.
Für Barcodes hat das Ermöglichen von Imagesantialias die Kanten der geraden Linie erheblich verbessert.
Bei QR -Codes hat die einfache Aktivierung von Imagesantialias nur begrenzte Auswirkungen und kombiniert normalerweise die Methode zum Ein- und Ausschalten, um glattere Grafiken zu erhalten.
In Kombination mit anderen Bildverarbeitungsfunktionen von PHP GD kann die visuelle Qualität von Barcodes und QR -Codes effektiv verbessert werden.