저번 글에서 "PHP로 사진 출력하는 방법은?"을 가져왔습니다. (범례에 대한 자세한 설명) ", PHP에서 이미지를 출력하는 방법을 자세히 소개합니다. 이 기사에서는 계속해서 PHP에서 이미지를 그리는 방법을 보여줍니다. 도움이 되길 바랍니다!
PHP에서 이미지를 그리는 것은 여전히 이전 글의 캔버스를 기반으로 하고, 캔버스를 생성한 후, 캔버스에 이미지를 그립니다. 이미지라고 하면 색상을 먼저 생각하기 때문에 먼저 PHP에서 이미지의 색상을 어떻게 정의해야 하는지 살펴보겠습니다.
이미지 정의 색상
PHP를 사용하여 이미지를 작동할 때 이 아름다운 이미지의 윤곽을 다른 색상으로 설정하는 것은 불가피합니다. 그렇다면 PHP에서 이미지에 색상을 어떻게 제공해야 할까요? 이번에는 imagecolorallocate()와 imagecolorallocatealpha()라는 두 가지 함수를 사용하겠습니다. 다음으로 이 두 기능을 어떻게 사용하는지 살펴보겠습니다.
imagecolorallocate()
Functionimagecolorallocate()
函数
imagecolorallocate() 函数能够为图像分配颜色,想要设置多种颜色的话,需要多次调用该函数,函数的语法格式:
imagecolorallocate(resource $image, int $red, int $green, int $blue)
其中,$image表示了需要设置颜色的图像,该函数会返回一个标识符,表示了给定的RGB成分组成的颜色,$red,$green 和 $blue 分别是所需要的颜色的红,绿,蓝成分,取值范围是 0 到 255 的整数或者十六进制的 0x00 到 0xFF。
示例如下:
<?php $image = imagecreate(100, 100); $blue = imagecolorallocate($image, 0, 0, 255); header('Content-type:image/jpeg'); imagejpeg($image); imagedestroy($image); ?>
输出结果:
imagecolorallocatealpha()
函数
imagecolorallocatealpha()函数与imagecolorallocate()函数相比,它们的作用是相同的,但是多了一个用来设置透明参数的alpha,它的语法格式如下:
imagecolorallocatealpha(resource $image, int $red, int $green, int $blue, int $alpha)
其中,前面的参数与imagecolorallocate()函数的参数表示为一致的,$alphab表示的是透明度的参数,取值范围在 0 到 127 之间,0 表示完全不透明,127 则表示完全透明。
示例如下:
<?php $size=300; $image=imagecreatetruecolor($size,$size); $back=imagecolorallocate($image,0,0,0); $border=imagecolorallocate($image,255,255,255); imagefilledrectangle($image,0,0,$size-1,$size-1,$back); imagerectangle($image,0,0,$size-1,$size-1,$border); $yellow_x=100; $yellow_y=75; $red_x=100; $red_y=165; $blue_x=187; $blue_y=125; $radius=150; //用alpha值分配一些颜色 $yellow=imagecolorallocatealpha($image,200,200,0,75); $red=imagecolorallocatealpha($image,200,0,0,75); $blue=imagecolorallocatealpha($image,0,0,200,75); //画3个交迭的圆 imagefilledellipse($image,$yellow_x,$yellow_y,$radius,$radius,$yellow); imagefilledellipse($image,$red_x,$red_y,$radius,$radius,$red); imagefilledellipse($image,$blue_x,$blue_y,$radius,$radius,$blue); //不要忘记输出正确的header! header('Content-type:image/png'); //最后输出结果 imagepng($image); imagedestroy($image); ?>
输出结果:
由此通过imagecolorallocate() 和 imagecolorallocatealpha()这两个函数已经能够实现在图像上定义颜色了。同时图像不仅是由颜色构成的,还需要有点、线还有不同的形状。那接下来我们来看一看,应该怎样去解决这些问题。
绘制点和线
绘制点和线可以说是PHP中绘制图像最基本的操作了,虽然很基本,但是灵活应用起来,可以通过它们绘制出更多复杂的图像,我们可以通过 imagesetpixel()
函数在画布中绘制一个点,也可以设置点的颜色,它的函数的语法格式如下:
imagesetpixel(resource $image, int $x, int $y, int $color)
其中,$image表示的是创建的画布,$x和$y表示的是在($x,$y)这个坐标点,这个坐标点的颜色是$color。
绘制一条线段则可以使用 imageline()
函数,其语法格式如下:
imageline(resource $image, int $x1, int $y1, int $x2, int $y2, int $color)
其中,表示在坐标($x1,$y1)到坐标($x2,$y2)的一条颜色为$color的线段。
接下来我们可以通过循环和随机数的结合来进行示例:
<?php $img = imagecreate(200, 100); imagecolorallocate($img, 0, 0, 0); $blue = imagecolorallocate($img, 0, 0, 255); $red = imagecolorallocate($img, 255, 0, 0); for ($i=0; $i <= 50; $i++) { $color = imagecolorallocate($img, rand(0, 255), rand(0, 255), rand(0, 255)); imagesetpixel($img, rand(0, 200), rand(0, 100), $color); imageline($img, rand(0, 200), rand(0, 100), rand(0, 200), rand(0, 100), $color); } header('Content-type:image/jpeg'); imagejpeg($img); imagedestroy($img); ?>
输出结果:
绘制矩形
在PHP中,我们想要绘制矩形的话,需要通过 imagerectangle()
或者 imagefilledrectangle()
imagerectangle(resource $image, int $x1, int $y1, int $x2, int $y2, int $color) imagefilledrectangle(resource $image, int $x1, int $y1, int $x2, int $y2, int $color)
<?php $img = imagecreate(300, 150); imagecolorallocate($img, 255, 255, 255); $green = imagecolorallocate($img, 0, 255, 0); $blue = imagecolorallocate($img, 0, 0, 255); imagerectangle($img, 5, 5, 145, 145, $green); imagefilledrectangle($img, 150, 5, 295, 145, $blue); header('Content-type:image/jpeg'); imagejpeg($img); imagedestroy($img); ?>
imagecolorallocatealpha()
Function🎜🎜🎜imagecolorallocate() 함수와 비교하면, 함수는 동일하지만 투명도 매개변수를 설정하는 데 사용되는 추가 알파가 있습니다. 구문 형식은 다음과 같습니다. 🎜rrreee🎜 그 중 이전 매개변수는 imagecolorallocate() 함수의 매개변수와 일치하며 $alphab는 투명도 매개변수에서 값 범위는 0에서 127 사이이며, 0은 완전히 불투명함을 의미하고 127은 완전히 투명함을 의미합니다. 🎜🎜예제는 다음과 같습니다. 🎜🎜rrreee🎜출력 결과: 🎜🎜🎜🎜🎜이제 imagecolorallocate() 및 imagecolorallocatealpha() 두 함수를 통해 이미지의 색상을 정의할 수 있습니다. 동시에 이미지는 색상뿐만 아니라 점, 선 및 다양한 모양으로 구성됩니다. 그러면 이러한 문제를 해결하는 방법을 살펴보겠습니다. 🎜🎜🎜🎜점과 선 그리기🎜🎜🎜🎜🎜점과 선 그리기는 PHP에서 이미지를 그리는 가장 기본적인 작업이라고 할 수 있습니다. 매우 기본적이지만, 유연하게 적용하면 이를 통해 더 복잡한 이미지를 그릴 수 있습니다. . imagesetpixel()
함수를 통해 캔버스에 점을 그릴 수 있으며, 해당 함수의 구문 형식은 다음과 같습니다. 🎜rrreee🎜 $image는 생성된 캔버스를 나타내고 $x와 $y는 ($x, $y)의 좌표점을 나타내며 이 좌표점의 색상은 $color입니다. 🎜🎜🎜선분을 그리려면 imageline()
함수를 사용하면 됩니다. 구문 형식은 다음과 같습니다. 🎜rrreee🎜그 중 좌표($x1, $y1)부터를 의미합니다. 좌표 ($x2, $y2) $color 색상의 선분. 🎜🎜🎜다음으로 루프와 난수를 결합하여 예를 들 수 있습니다. 🎜rrreee🎜출력 결과: 🎜🎜🎜🎜🎜🎜🎜🎜사각형 그리기🎜🎜🎜🎜🎜PHP에서 직사각형을 그리려면 imageRectangle()
또는 imagefilled직사각형()
함수입니다. imagefilled직사각형() 함수는 직사각형을 그린 후에 직사각형을 채우지만, imageRectangle() 함수는 그렇지 않습니다. 구문 형식은 다음과 같습니다. 🎜🎜rrreee🎜둘 중 둘 다 왼쪽 위 모서리 좌표($x1, $y1)와 오른쪽 아래 모서리 좌표($x2, $y2)로 직사각형을 그리는 것을 나타냅니다. 또한 imageRectangle() 함수 뒤의 색상은 직사각형 가장자리의 색상을 나타내고, imagefilledRectangle() 함수 뒤의 색상은 직사각형 내의 채우기 색상을 나타냅니다. 🎜🎜🎜 다음은 예제를 통해 imageRectangle() 또는 imagefilled직사각형() 함수를 통해 직사각형을 그립니다. 🎜rrreee🎜출력 결과: 🎜🎜🎜🎜🎜추천 학습: "PHP 비디오 튜토리얼"
위 내용은 PHP에서 색상을 정의하고 점, 선 및 직사각형을 그리는 방법에 대한 자세한 분석?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!