이미지 처리는 특히 웹 사이트를 개발하거나 이미지를 편집하거나 축소판을 생성 할 때 PHP의 일반적인 작업입니다. PHP는 이미지의 회전 변환을 구현하기 위해 일부 기능과 도구를 제공합니다. 매우 유용한 기능 중 하나는 imageAffinematrixget () 이며, 이는 아핀 변환 매트릭스를 얻는 데 사용됩니다. 이 행렬을 통해 이미지에서 회전, 스케일, 절단 및 기타 변환 작업을 수행 할 수 있습니다.
이미지 처리에서, 아핀 변환은 평행선을 변경하지 않는 변환이다. 회전, 번역, 스케일링 및 기타 작업은 모두 아핀 변환입니다. 아핀 변환 매트릭스는 이미지에서 각 픽셀 위치를 변환하는 방법을 정의하는 2x3 매트릭스입니다. 이 매트릭스를 통해 PHP는 이미지에서 복잡한 기하학적 변환을 수행 할 수 있습니다.
아핀 변환 매트릭스의 구조는 다음과 같습니다.
<span><span>[</span><span><span class="hljs-meta">a, b, c</span></span><span>]
[</span><span><span class="hljs-meta">d, e, f</span></span><span>]
</span></span>
a , b , d , e는 스케일링, 회전, 전단 등에 사용되는 값입니다.
C 와 F는 번역 변환의 값입니다.
PHP의 imageAffinematrixget () 함수는 Affine 변환 매트릭스, 특히 회전 변환을 생성하는 데 필요한 행렬을 생성하는 데 사용됩니다. 이 함수의 구문은 다음과 같습니다.
<span><span><span class="hljs-title function_ invoke__">imageaffinematrixget</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$type</span></span><span>)
</span></span>
$ 유형은 생성하려는 변환 유형을 지정하는 문자열입니다. 일반적인 변환 유형은 다음과 같습니다.
'회전' : 회전 행렬을 생성합니다.
'스케일' : 스케일링 매트릭스를 생성합니다.
'전단' : 전단 매트릭스를 생성합니다.
회전 작업의 경우 일반적으로 '회전' 유형을 사용합니다.
아래에서는 간단한 예제를 사용하여 이미지 회전을 달성하기 위해 imageAffinematrixget () 함수를 사용하는 방법을 보여줍니다.
먼저 JPEG 또는 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-variable">$image</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecreatefromjpeg</span></span><span>(</span><span><span class="hljs-string">'example.jpg'</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
imageAffinematrixget () 함수를 사용하여 회전 행렬을 얻으십시오. 이미지를 45도 회전시키고 싶다고 가정 해 봅시다.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 회전 매트릭스를 얻으십시오</span></span><span>
</span><span><span class="hljs-variable">$matrix</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imageaffinematrixget</span></span><span>(</span><span><span class="hljs-string">'rotate'</span></span><span>, </span><span><span class="hljs-number">45</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
다음으로 imageAffine () 함수를 사용하여 행렬을 이미지에 적용하십시오. imageAffine () 함수는 이미지 자원과 아핀 변환 행렬의 두 가지 매개 변수를 수락합니다.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Affine 변환을 적용하십시오</span></span><span>
</span><span><span class="hljs-variable">$transformed_image</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imageaffine</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>, </span><span><span class="hljs-variable">$matrix</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
이제 변환 된 이미지를 파일에 저장하거나 브라우저에 직접 출력 할 수 있습니다.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 변환 된 이미지를 저장하십시오</span></span><span>
</span><span><span class="hljs-title function_ invoke__">imagejpeg</span></span><span>(</span><span><span class="hljs-variable">$transformed_image</span></span><span>, </span><span><span class="hljs-string">'rotated_example.jpg'</span></span><span>);
</span><span><span class="hljs-comment">// 또는 브라우저에 직접 출력</span></span><span>
</span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">'Content-Type: image/jpeg'</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">imagejpeg</span></span><span>(</span><span><span class="hljs-variable">$transformed_image</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
이미지 처리가 완료된 후 이미지 리소스를 해제하는 것을 잊지 마십시오.
<span><span><span class="hljs-meta"><?php</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">$image</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">imagedestroy</span></span><span>(</span><span><span class="hljs-variable">$transformed_image</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
다음은 위의 모든 단계를 결합한 완전한 코드 예제입니다.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 사진로드</span></span><span>
</span><span><span class="hljs-variable">$image</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecreatefromjpeg</span></span><span>(</span><span><span class="hljs-string">'example.jpg'</span></span><span>);
</span><span><span class="hljs-comment">// 회전 매트릭스를 얻으십시오</span></span><span>
</span><span><span class="hljs-variable">$matrix</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imageaffinematrixget</span></span><span>(</span><span><span class="hljs-string">'rotate'</span></span><span>, </span><span><span class="hljs-number">45</span></span><span>);
</span><span><span class="hljs-comment">// Affine 변환을 적용하십시오</span></span><span>
</span><span><span class="hljs-variable">$transformed_image</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imageaffine</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>, </span><span><span class="hljs-variable">$matrix</span></span><span>);
</span><span><span class="hljs-comment">// 변환 된 이미지를 저장하십시오</span></span><span>
</span><span><span class="hljs-title function_ invoke__">imagejpeg</span></span><span>(</span><span><span class="hljs-variable">$transformed_image</span></span><span>, </span><span><span class="hljs-string">'rotated_example.jpg'</span></span><span>);
</span><span><span class="hljs-comment">// 또는 브라우저에 직접 출력</span></span><span>
</span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">'Content-Type: image/jpeg'</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">imagejpeg</span></span><span>(</span><span><span class="hljs-variable">$transformed_image</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">$image</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">imagedestroy</span></span><span>(</span><span><span class="hljs-variable">$transformed_image</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
imageAffinematrixget () 함수를 통해 회전 변환에 필요한 행렬을 쉽게 얻고 이미지의 회전 작동을 실현하기 위해 imageAffine () 함수를 통해 이미지에 적용 할 수 있습니다. 이 접근법은 특히 이미지의 미세 제어가 필요한 경우 이미지 변환을 처리하는 유연하고 효율적인 방법을 제공합니다.
이 기사가 PHP의 이미지 처리 기능을 사용하여 이미지를 회전하고 변환하는 방법을 이해하는 데 도움이되기를 바랍니다.