>백엔드 개발 >PHP 튜토리얼 >PHP 이미지 처리(1부) - 기본

PHP 이미지 처리(1부) - 기본

齐天大圣
齐天大圣원래의
2020-05-03 10:42:11203검색

저는 이미지 처리 기술을 사용하기 전에 프로젝트를 접했습니다. 아래 사진과 비슷합니다

PHP 이미지 처리(1부) - 기본

사진은 배경사진, QR코드 사진, QR코드 사진 아래 텍스트 세 부분으로 나누어져 있습니다. 그 중 QR 코드 사진과 텍스트는 동적으로 생성되며 QR 코드 사진과 텍스트 설명은 활동에 따라 다릅니다.

이 요구 사항을 충족하려면 PHP 이미지 처리 기술을 사용하여 이를 달성해야 합니다. PHP의 이미지 처리는 매우 강력하며 많은 일을 할 수 있습니다. 일반적인 이미지에는 인증 코드 이미지, 이미지 워터마크, 썸네일 등이 포함됩니다.

기본 지식

먼저 PHP의 확장 GD 라이브러리를 설치해야 합니다. 그를 얻은 후에는 다음 단계를 진행할 수 있습니다. 다음은 주로 코드를 중심으로 설명되며, 구체적인 함수 사용법은 문서를 참조하세요.

캔버스 만들기

주요 기능인 imagecreatetruecolor는 새로운 트루 컬러 이미지를 만듭니다.

imagecreatetruecolor    ( int $width   , int $height   ) : resource
<?php
// 创建一个100*100的画布
$im = imagecreatetruecolor(100, 100);
// 生成png图片
header("Content-type:image/png");
imagepng($im);
imagedestroy($im);

캔버스 색상 설정

주요 기능

  • imagecolorallocate — 이미지에 색상 할당

  • imagefillll — 영역 채우기

imagecolorallocate( 리소스 $image , int $red , 정수 $green , int $blue ) : int

imagecolorallocate()는 주어진 RGB 구성 요소로 구성된 색상을 나타내는 식별자를 반환합니다. 빨간색, 녹색, 파란색은 각각 원하는 색상의 빨간색, 녹색, 파란색 구성 요소입니다. 이러한 매개변수는 0~255의 정수 또는 0x00~0xFF의 16진수입니다.

imagecolorallocate()를 호출하여 이미지로 표현되는 이미지에 사용되는 각 색상을 생성해야 합니다.

imagefill(resource $image, int $x, int $y, int $color): bool

imagefill()은 이미지의 x, y 좌표에 색상을 적용하여 실행됩니다(이미지의 왼쪽 상단은 0입니다). , 0) 영역 채우기(즉, x, y 지점과 동일한 색상의 포인트와 인접한 포인트가 채워집니다).

<?php
header("Content-type:image/png");
// 创建一个100*100的画布
$im = imagecreatetruecolor(100, 100);
// 设置红包
$color = imagecolorallocate($im, 255, 0, 0);
// 填充画布
imagefill($im, 0, 0, $color);
// 生成图片
imagepng($im);
// 销毁资源
imagedestroy($im);

이 코드는 100*100 빨간색 배경 이미지를 생성합니다

이미지 그리기

점과 선 그리기

주요 기능:

  • imagesetpixel — 단일 픽셀 그리기

  • 이미지라인 — 선분 그리기

imagesetpixel (resource $image , int $x, int $y , int $color): bool

imagesetpixel() 이미지에 색상 사용 색상은 x, y 좌표(왼쪽 상단)에 있습니다. 이미지의 0 , 0) 점을 그립니다.

imageline(resource $image, int $x1, int $y1, int $x2, int $y2, int $color): bool

imageline()은 색상을 사용하여 이미지의 x1, y1부터 x2 좌표까지 색상을 지정합니다. y2에 선분을 그립니다(이미지의 왼쪽 위 모서리는 0, 0입니다).

<?php
$imgHandler = imagecreatetruecolor(100,100);
// 填充背景
$bgColor = imagecolorallocate($imgHandler, 200, 30, 40);
imagefill($imgHandler,0, 0, $bgColor);
// 绘制点
for ($i = 0; $i < 100; $i++) {
   $pointColor = imagecolorallocate($imgHandler, rand(0,200), rand(0,200), rand(0,200));
   imagesetpixel($imgHandler, rand(0, 100), rand(0, 100), $pointColor);
}
// 绘制线
for ($i = 0; $i < 10; $i++) {
   $lineColor = imagecolorallocate($imgHandler, rand(100, 225), rand(100, 225), rand(0, 50));
   imageline($imgHandler, 
       rand(0, 100), 
       rand(0, 100),
       rand(0, 100),
       rand(0, 100), $lineColor);
}
header("Content-Type:image/png");
imagepng($imgHandler);
imagedestroy($imgHandler);

직사각형 그리기

<?php
$imgHandler = imagecreatetruecolor(100,100);
// 填充背景
$bgColor = imagecolorallocate($imgHandler, 200, 30, 40);
imagefill($imgHandler,0, 0, $bgColor);
// 绘制矩形边框
$borderCol = imagecolorallocate($imgHandler, 23, 32, 200);
imagerectangle($imgHandler, 0, 0, 99, 99, $borderCol);
header("Content-Type:image/png");
imagepng($imgHandler);
imagedestroy($imgHandler);

위 내용은 PHP 이미지 처리(1부) - 기본의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.