먼저 PNG 이미지를로드하고 imageRotate ()를 사용하여 회전하십시오. 일반적으로 투명한 영역은 추가 치료없이 검은 색으로 변합니다.
<span><span><span class="hljs-meta"><?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">?></span></span><span>
</span></span>위의 코드는 PNG 이미지를로드하고 회전하지만 ImageRotate () 의 세 번째 매개 변수는 0 이므로 검은 색이 투명 부분을 채울 수 있습니다.
투명성을 유지하기 위해 핵심은 PNG 이미지를 투명하게 유지하도록 PHP에 알려주는 것입니다. imageRotate () 함수 전에 이미지 블렌딩 모드가 비활성화되고 Alpha 채널이 저장되어 있는지 확인해야합니다.
<span><span><span class="hljs-meta"><?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">?></span></span><span>
</span></span>ImageAlphableding ($ image, false); 알파 채널의 혼합 모드를 비활성화하여 투명 영역이 작동 중에 다른 색상과 혼합되지 않도록하십시오.
ImagesAvealpha ($ image, true); 투명 영역이 다른 색상으로 채워지지 않도록 알파 채널 (투명성 정보)을 절약 할 수있게되며 회전 된 이미지는 여전히 투명한 배경을 유지합니다.
이미지를 회전 할 때 투명한 영역 밖에서 색상을 채우고 싶다면 투명성을 유지하는 대신 이미지를 회전시키지 않으면 이미지가 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>이것은 투명 영역을 검은 색이 아닌 흰색으로 채 웁니다.
회전 된 이미지를 출력 할 때는 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>