현재 위치: > 최신 기사 목록> Imagerotate를 사용하여 투명 PNG 이미지를 회전 할 때 투명성을 유지하는 방법

Imagerotate를 사용하여 투명 PNG 이미지를 회전 할 때 투명성을 유지하는 방법

gitbox 2025-09-18

1. imageRotate ()를 사용하여 PNG 이미지를 회전시킵니다

먼저 PNG 이미지를로드하고 imageRotate ()를 사용하여 회전하십시오. 일반적으로 투명한 영역은 추가 치료없이 검은 색으로 변합니다.

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// 짐 PNG 영상</span></span><span>
</span><span><span class="hljs-variable">$imagePath</span></span><span> = </span><span><span class="hljs-string">'image.png'</span></span><span>;
</span><span><span class="hljs-variable">$image</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecreatefrompng</span></span><span>(</span><span><span class="hljs-variable">$imagePath</span></span><span>);

</span><span><span class="hljs-comment">// 설정 PNG 영상为透明背景</span></span><span>
</span><span><span class="hljs-title function_ invoke__">imagealphablending</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>, </span><span><span class="hljs-literal">false</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">imagesavealpha</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>, </span><span><span class="hljs-literal">true</span></span><span>);

</span><span><span class="hljs-comment">// 旋转영상,각도입니다 90 도</span></span><span>
</span><span><span class="hljs-variable">$rotatedImage</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagerotate</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>, </span><span><span class="hljs-number">90</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__">header</span></span><span>(</span><span><span class="hljs-string">'Content-Type: image/png'</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">imagepng</span></span><span>(</span><span><span class="hljs-variable">$rotatedImage</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">$rotatedImage</span></span><span>);
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

위의 코드는 PNG 이미지를로드하고 회전하지만 ImageRotate () 의 세 번째 매개 변수는 0 이므로 검은 색이 투명 부분을 채울 수 있습니다.

2. 검은 배경의 모양을 방지하십시오

투명성을 유지하기 위해 핵심은 PNG 이미지를 투명하게 유지하도록 PHP에 알려주는 것입니다. imageRotate () 함수 전에 이미지 블렌딩 모드가 비활성화되고 Alpha 채널이 저장되어 있는지 확인해야합니다.

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// 짐 PNG 영상</span></span><span>
</span><span><span class="hljs-variable">$imagePath</span></span><span> = </span><span><span class="hljs-string">'image.png'</span></span><span>;
</span><span><span class="hljs-variable">$image</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecreatefrompng</span></span><span>(</span><span><span class="hljs-variable">$imagePath</span></span><span>);

</span><span><span class="hljs-comment">// 설정 PNG 영상为透明背景</span></span><span>
</span><span><span class="hljs-title function_ invoke__">imagealphablending</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>, </span><span><span class="hljs-literal">false</span></span><span>);  </span><span><span class="hljs-comment">// 장애가 있는 alpha 혼합</span></span><span>
</span><span><span class="hljs-title function_ invoke__">imagesavealpha</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>, </span><span><span class="hljs-literal">true</span></span><span>);  </span><span><span class="hljs-comment">// 유지하다 alpha 통로</span></span><span>

</span><span><span class="hljs-comment">// 旋转영상,각도입니다 90 도</span></span><span>
</span><span><span class="hljs-variable">$rotatedImage</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagerotate</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>, </span><span><span class="hljs-number">90</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__">header</span></span><span>(</span><span><span class="hljs-string">'Content-Type: image/png'</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">imagepng</span></span><span>(</span><span><span class="hljs-variable">$rotatedImage</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">$rotatedImage</span></span><span>);
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

3. 왜 ImageAlphableding ()ImagesAvealpha ()를 사용합니까?

  • ImageAlphableding ($ image, false); 알파 채널의 혼합 모드를 비활성화하여 투명 영역이 작동 중에 다른 색상과 혼합되지 않도록하십시오.

  • ImagesAvealpha ($ image, true); 투명 영역이 다른 색상으로 채워지지 않도록 알파 채널 (투명성 정보)을 절약 할 수있게되며 회전 된 이미지는 여전히 투명한 배경을 유지합니다.

4. 투명한 배경을 채우십시오

이미지를 회전 할 때 투명한 영역 밖에서 색상을 채우고 싶다면 투명성을 유지하는 대신 이미지를 회전시키지 않으면 이미지가 imageRotate () 에 다른 채우기 색상을 설정할 수 있습니다. 예를 들어, 채우기를 흰색으로 설정하십시오.

 <span><span><span class="hljs-variable">$rotatedImage</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagerotate</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>, </span><span><span class="hljs-number">90</span></span><span>, </span><span><span class="hljs-title function_ invoke__">imagecolorallocatealpha</span></span><span>(</span><span><span class="hljs-variable">$image</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-number">127</span></span><span>));
</span></span>

이것은 투명 영역을 검은 색이 아닌 흰색으로 채 웁니다.

5. 이미지를 출력하고 저장합니다

회전 된 이미지를 출력 할 때는 PNG 이미지의 투명 부분을 처리 할 수 ​​있으므로 ImagePng () 함수를 사용해야합니다. 이미지를 파일에 저장할 수도 있습니다.

 <span><span><span class="hljs-title function_ invoke__">imagepng</span></span><span>(</span><span><span class="hljs-variable">$rotatedImage</span></span><span>, </span><span><span class="hljs-string">'rotated_image.png'</span></span><span>);
</span></span>