바코드 또는 QR 코드를 생성 할 때 그래프는 일반적으로 많은 직선과 사각형으로 구성됩니다. 이러한 그래픽이 웹 페이지 나 인쇄물에 더 부드러운 것처럼 보이고 들쭉날쭉 한 모서리를 줄이려면 PHP의 imageAntialias 기능을 사용하여 이미지에 대한 알리 아스를 활성화 할 수 있습니다. 이 기사는 ImageAntialias 기능의 사용을 소개하고 바코드 또는 QR 코드 생성 예제를 결합하여 더 명확한 그래픽 출력을 달성하는 방법을 보여줍니다.
ImageAntialias 는 PHP GD 라이브러리의 기능으로, 그려진 라인에 대한 항아리아를 활성화 또는 비활성화합니다. 반 알리어스가 활성화되면, 그린 선의 가장자리가 더 부드럽게되어 재깅 효과가 줄어 듭니다.
기능 프로토 타입은 다음과 같습니다.
bool imageantialias ( resource $image , bool $enabled )
$ 이미지 : 이미지 리소스
$ enabled : aliasing, true enable, false disable을 활성화할지 여부
바코드 또는 QR 코드는 일반적으로 픽셀 블록 또는 라인으로 구성된 그래프이며 확대되거나 감소 될 때 들쭉날쭉합니다. 반 알리 아스를 활성화함으로써 가장자리가 더 부드러워 질 수 있으므로 특히 인쇄 할 때 시각적 효과가 향상됩니다.
그러나 ImageAntialias는 선과 다각형에 명백한 영향을 미치며 개별 픽셀 블록에 제한된 영향을 미칩니다. 따라서 QR 코드 생성에서는 종종 다른 평활 처리 기술과 함께 사용됩니다.
아래에서는 PHP GD 기능을 사용하여 간단한 바코드 스트라이프 다이어그램을 만들고 imageAntialias 를 사용하여 안티 앨리어싱을 활성화하십시오.
<?php
// 빈 이미지를 만듭니다
$width = 200;
$height = 80;
$image = imagecreatetruecolor($width, $height);
// 색상을 할당합니다
$white = imagecolorallocate($image, 255, 255, 255);
$black = imagecolorallocate($image, 0, 0, 0);
// 흰색으로 채워진 배경
imagefill($image, 0, 0, $white);
// 반 알리 아스를 활성화하십시오
imageantialias($image, true);
// 바코드를 그리기위한 검은 줄무늬(간단한 예)
for ($x = 10; $x < 190; $x += 20) {
imageline($image, $x, 10, $x, 70, $black);
}
// 출력 이미지
header('Content-Type: image/png');
imagepng($image);
// 리소스를 자유롭게합니다
imagedestroy($image);
?>
이 예에서는 200x80 이미지를 만들어 20 픽셀 간격으로 수직 검은 선을 그립니다. imageAntialias ($ image, true)를 호출 한 후 라인의 가장자리가 더 부드럽게됩니다.
QR 코드는 일반적으로 픽셀 블록으로 표시되며 GD 라이브러리의 ImageAntialias는 단일 픽셀 드로잉에 제한된 영향을 미칩니다. 일반적으로 "매끄러운"효과는 QR 코드 이미지를 확대 한 다음 대상 크기를 줄임으로써 달성됩니다. 또한 QR 코드를 그릴 때 imageFilledRectangle을 사용하여 더 큰 픽셀을 그리고 알리 아스 라인과 결합하여 시각적 부드러움을 향상시킬 수도 있습니다.
다음 예제는 더 큰 버전의 QR 코드 다이어그램을 만드는 방법을 보여준 다음 특정 방지 효과를 달성하기 위해이를 수축시키는 방법을 보여줍니다.
<?php
// QR 코드 데이터가 생성되었다고 가정하십시오,간단한 시뮬레이션 QR 코드 매트릭스
$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; // 비율을 확대하십시오
$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) {
// 확대 된 블록을 그립니다
imagefilledrectangle(
$image,
$x * $scale,
$y * $scale,
($x + 1) * $scale - 1,
($y + 1) * $scale - 1,
$black
);
}
}
}
// 안티 앨리어싱 효과를 달성하기 위해 이미지를 줄입니다
$finalWidth = count($matrix) * 3; // 수축3더블
$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);
?>
이 코드는 10 배 QR 코드 블록 다이어그램을 작성한 다음 크기의 3 배로 줄어들고 ImageCopyResAmpled 의 고품질 리샘플링을 사용하여 특정 방지 효과를 달성함으로써 만들어졌습니다.
ImageAntialias 는 주로 이미지에서 라인의 반 알리 아즈를 가능하게하여 라인을 더 매끄럽게 만듭니다.
바코드의 경우 imageantialias를 가능하게하면 직선의 가장자리가 크게 향상되었습니다.
QR 코드의 경우, ImageAntialias를 가능하게하는 것은 효과가 제한되어 있으며 일반적으로 더 부드러운 그래픽을 얻기 위해 확대 및 축소 방법을 결합합니다.
PHP GD의 다른 이미지 처리 기능과 결합하여 바코드 및 QR 코드의 시각적 품질을 효과적으로 개선 할 수 있습니다.