저는 이미지 처리 기술을 사용하기 전에 프로젝트를 접했습니다. 아래 사진과 비슷합니다
사진은 배경사진, 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!