ImagesEtStyle () 은 PHP의 GD 확장에 의해 제공되는 함수이며, 라인 드로잉에 대한 "스타일"(즉, 픽셀 시퀀스)을 설정하는 데 사용되므로 미리 정의 된 점선 및 점선, 점선 또는 기타 복잡한 라인 유형은 Imageline () , ImagePolygon () 등과 같은 도면 기능을 호출 할 때 미리 정의 된 점선 및 점선, 점선 또는 기타 복잡한 라인 유형을 사용할 수 있습니다. IMG_COLOR_STYLEDBRUSHED 브러시와 함께 사용) 라인을 그릴 때 라인을 스타일로 그릴 때. PHP +1
<span><span><span class="hljs-keyword">bool</span></span><span> </span><span><span class="hljs-title function_ invoke__">imagesetstyle</span></span><span> ( GdImage|resource </span><span><span class="hljs-variable">$image</span></span><span> , </span><span><span class="hljs-keyword">array</span></span><span> </span><span><span class="hljs-variable">$style</span></span><span> )
</span></span>$ 이미지 : imageCreatetRueColor () 또는 imageCreate () 등이 반환 한 이미지 리소스 또는 gdimage 객체.
$ 스타일 : 여러 "픽셀 색상"으로 구성된 배열 (빈 배열이 될 수 없습니다). 배열 요소는 일반적으로 imagecolorallocate () / imagecolorallocatealpha () 에 의해 반환되는 컬러 식별자 (적분)이며, 투명한 픽셀을 나타내는 일정한 IMG_COLOR_TRANSPARENT를 포함 할 수도 있습니다. 함수는 실패한 경우에 성공적으로 진정 으로 반환하고 False를 반환합니다. PHP
[빨간색, 빨간색, 빨간색, 흰색, 흰색] 과 같은 "픽셀 패턴"문자열로 $ 스타일을 생각하십시오. 선을 그리거나 특수 색상 IMG_COLOR_STYLED를 사용하는 경우 GD는 선을 따라 픽셀을 순서대로 읽습니다. 색상 값이 발생하면 해당 픽셀을 그리며 투명한 값을 발견하면 건너 뛰면 대시 선, 점 및 선과 같은 효과를 형성하십시오. 스타일 배열이 길고 조합이 복잡할수록 더 많은 라인 유형을 만들 수 있습니다. Tecfa
IMG_COLOR_STYLED : Imageline () 과 같은 함수에서 색상 매개 변수로 사용되며, 현재 스타일 배열을 사용하여 선이 그려 져야합니다.
img_color_brushed / img_color_styledbrushed : 브러시 (브러시)와 함께 사용되는 특수 색상 상수 (보다 복잡한 드로잉 장면에 사용할 수 있음).
IMG_COLOR_TRANSPARENT : 투명 픽셀은 스타일 배열로 표시됩니다.
이러한 상수는 PHP 이미지/GD 상수 테이블에 설명되어 있습니다. PHP
다음 예제는 캔버스를 생성하고 스타일을 정의하고 Imageline () 로 대각선 점선을 그리운 다음 이미지를 PNG 파일 (또는 브라우저에서 직접 표시)으로 출력하는 방법을 보여줍니다.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 머리(브라우저에서 이미지를 직접 출력하는 경우)</span></span><span>
</span><span><span class="hljs-comment">// header('Content-Type: image/png');</span></span><span>
</span><span><span class="hljs-comment">// 캔버스를 만듭니다</span></span><span>
</span><span><span class="hljs-variable">$w</span></span><span> = </span><span><span class="hljs-number">300</span></span><span>;
</span><span><span class="hljs-variable">$h</span></span><span> = </span><span><span class="hljs-number">200</span></span><span>;
</span><span><span class="hljs-variable">$im</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecreatetruecolor</span></span><span>(</span><span><span class="hljs-variable">$w</span></span><span>, </span><span><span class="hljs-variable">$h</span></span><span>);
</span><span><span class="hljs-comment">// 색 분포</span></span><span>
</span><span><span class="hljs-variable">$white</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecolorallocate</span></span><span>(</span><span><span class="hljs-variable">$im</span></span><span>, </span><span><span class="hljs-number">255</span></span><span>, </span><span><span class="hljs-number">255</span></span><span>, </span><span><span class="hljs-number">255</span></span><span>);
</span><span><span class="hljs-variable">$black</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecolorallocate</span></span><span>(</span><span><span class="hljs-variable">$im</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>);
</span><span><span class="hljs-variable">$red</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecolorallocate</span></span><span>(</span><span><span class="hljs-variable">$im</span></span><span>, </span><span><span class="hljs-number">255</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>);
</span><span><span class="hljs-comment">// 배경을 채우십시오</span></span><span>
</span><span><span class="hljs-title function_ invoke__">imagefilledrectangle</span></span><span>(</span><span><span class="hljs-variable">$im</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-variable">$w</span></span><span>-</span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-variable">$h</span></span><span>-</span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-variable">$white</span></span><span>);
</span><span><span class="hljs-comment">// 스타일을 정의하십시오:5 레드 픽셀,5 흰색 픽셀 —— 명확한 점선을 형성하십시오</span></span><span>
</span><span><span class="hljs-variable">$style</span></span><span> = [
</span><span><span class="hljs-variable">$red</span></span><span>, </span><span><span class="hljs-variable">$red</span></span><span>, </span><span><span class="hljs-variable">$red</span></span><span>, </span><span><span class="hljs-variable">$red</span></span><span>, </span><span><span class="hljs-variable">$red</span></span><span>,
</span><span><span class="hljs-variable">$white</span></span><span>, </span><span><span class="hljs-variable">$white</span></span><span>, </span><span><span class="hljs-variable">$white</span></span><span>, </span><span><span class="hljs-variable">$white</span></span><span>, </span><span><span class="hljs-variable">$white</span></span><span>
];
</span><span><span class="hljs-comment">// 스타일을 설정합니다</span></span><span>
</span><span><span class="hljs-title function_ invoke__">imagesetstyle</span></span><span>(</span><span><span class="hljs-variable">$im</span></span><span>, </span><span><span class="hljs-variable">$style</span></span><span>);
</span><span><span class="hljs-comment">// 스타일을 사용하여 선을 그립니다:특수 색상을 입력하십시오 IMG_COLOR_STYLED</span></span><span>
</span><span><span class="hljs-comment">// 알아채다:imageline() 마지막 매개 변수는 색 인덱스 또는 특수 상수를 허용합니다.</span></span><span>
</span><span><span class="hljs-title function_ invoke__">imageline</span></span><span>(</span><span><span class="hljs-variable">$im</span></span><span>, </span><span><span class="hljs-number">10</span></span><span>, </span><span><span class="hljs-number">10</span></span><span>, </span><span><span class="hljs-variable">$w</span></span><span> - </span><span><span class="hljs-number">10</span></span><span>, </span><span><span class="hljs-variable">$h</span></span><span> - </span><span><span class="hljs-number">10</span></span><span>, IMG_COLOR_STYLED);
</span><span><span class="hljs-comment">// 파일에 저장하십시오(예),또는 사용 imagepng($im); 브라우저에 출력</span></span><span>
</span><span><span class="hljs-title function_ invoke__">imagepng</span></span><span>(</span><span><span class="hljs-variable">$im</span></span><span>, </span><span><span class="hljs-keyword">__DIR__</span></span><span> . </span><span><span class="hljs-string">'/dashed_example.png'</span></span><span>);
</span><span><span class="hljs-comment">// 리소스를 자유롭게합니다</span></span><span>
</span><span><span class="hljs-title function_ invoke__">imagedestroy</span></span><span>(</span><span><span class="hljs-variable">$im</span></span><span>);
</span></span>위의 코드는 DASHED_EXALLE.PNG를 생성하며 점선은 스타일별로 루프하는 대각선에 표시됩니다. 핵심 사항 : ImagesEtStyle () 은 스타일 배열을 설정 한 다음 라인을 그리면 스타일로 그리기에 IMG_COLOR_STYLED를 사용합니다. TECFA PHP
더 섬세한 점선을 원한다면 스타일의 일부 항목을 IMG_COLOR_TRANSPARENT 로 설정하여 픽셀이 그려지지 않았 음을 나타내므로 간격을 형성 할 수 있습니다.
<span><span><span class="hljs-variable">$style</span></span><span> = [</span><span><span class="hljs-variable">$black</span></span><span>, </span><span><span class="hljs-variable">$black</span></span><span>, IMG_COLOR_TRANSPARENT, IMG_COLOR_TRANSPARENT];
</span><span><span class="hljs-title function_ invoke__">imagesetstyle</span></span><span>(</span><span><span class="hljs-variable">$im</span></span><span>, </span><span><span class="hljs-variable">$style</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">imageline</span></span><span>(</span><span><span class="hljs-variable">$im</span></span><span>, </span><span><span class="hljs-number">20</span></span><span>, </span><span><span class="hljs-number">50</span></span><span>, </span><span><span class="hljs-number">280</span></span><span>, </span><span><span class="hljs-number">50</span></span><span>, IMG_COLOR_STYLED);
</span></span>이것은 두 픽셀마다 2 개의 검은 점을 그릴 것입니다. 그런 다음 2 픽셀을 건너 뛰고 반복합니다. PHP
GD는 또한 "Brush"( ImagesEtBrush () 를 통해)를 지원하여 복잡한 선을 그립니다. 선을 위해 스타일과 브러시를 모두 설정하고 그리기시 IMG_COLOR_STYLEDBRUSHED를 사용하는 경우 GD는 스타일 인덱스를 브러시 픽셀과 결합하여 렌더링합니다. 이 사용법은 다양한 브러시 효과를 스타일별로 전환 해야하는 장면 (예 : 점선이지만 각 세그먼트에 대해 다른 패턴)에 적합합니다. 구체적인 자세한 내용은 GD 설명서의 브러시에 대한 장을 참조하십시오. PHP +1
스타일 배열이 비어있을 수 없습니다 : 빈 배열로 통과하면 고장이 발생합니다. PHP
스타일 요소 유형 : 배열 요소는 할당 된 색 인덱스 ( imageColorAllocate () 반환 값) 또는 IMG_COLOR_TRANSPARENT 상수 여야합니다. RGB 배열을 직접 작성하면 적용되지 않습니다. Tecfa
스타일 길이와 효과 : 스타일 배열이 길수록 유연하지만 더 많은 메모리와 계산을 소비합니다 (일반적으로 스타일 길이가 짧음).
라인 방향/슬래시 문제 : 역사상 초기 PHP/GD 버그가 일부 슬래시 스타일에 영향을 미쳤지만이 기능은 최신 PHP 버전에서 안정적입니다. 이상한 문제가 발생하면 먼저 PHP 및 GD 확장을 확인하고 작은 예제를 수동으로 디버그하십시오. PHP MWKWorks.com
이미지 색상 모드와의 호환성 : 일반적으로 실제 색상 이미지에서 스타일을 사용해도 괜찮습니다. 색인 색상 이미지의 색상 제한 수에주의하십시오. imageCreateTrueColor ()를 사용하면 많은 색상 호환성 문제를 피할 수 있습니다. PHP
스타일 + 투명 픽셀을 사용하여 점선 테두리 또는 진행률 막대 스케일을 만듭니다.
런타임에서 스타일 배열을 동적으로 생성하십시오 (예 : 필요한 대시 길이와 갭 길이를 기반으로 배열을 계산).
더 복잡한 텍스처 (단일 픽셀이 아닌 패턴 세그먼트)가 필요한 경우 ImagesEtBrush ()를 결합하거나 작은 패턴으로 반복적으로 그리는 것을 고려하십시오. PHP