在PHP 中,處理圖像是一項常見的任務。使用GD 庫中的imagerotate函數,可以輕鬆地將圖像進行旋轉操作。此函數非常實用,尤其是在處理用戶上傳的圖像時。如果你想將圖像旋轉並將其輸出為JPEG 格式,本文將會詳細介紹如何實現。
imagerotate是PHP 中GD 庫提供的一個函數,允許你對圖像進行旋轉。旋轉後的圖像是基於指定的角度進行的,並且可以通過一個指定的背景顏色填充空白區域。
<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-variable">$angle</span></span><span>, </span><span><span class="hljs-variable">$bgColor</span></span><span>);
</span></span>$image : 一個圖像資源,通常由imagecreatefrom...系列函數(如imagecreatefromjpeg 、 imagecreatefrompng等)創建。
$angle : 旋轉角度,單位是度。正值表示順時針旋轉,負值表示逆時針旋轉。
$bgColor : 旋轉後的空白區域的背景顏色,通常是imagecolorallocate函數創建的顏色資源。
接下來,我們將會演示如何通過PHP 實現將圖片旋轉並保存為JPEG 格式的具體步驟。假設我們要處理一個名為example.jpg的圖像文件。
首先,我們需要加載需要旋轉的圖像。這裡使用imagecreatefromjpeg函數來加載JPEG 格式的圖像。
<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>我們接下來通過imagerotate來旋轉圖像。假設我們希望將圖像順時針旋轉90 度,背景顏色為白色。
<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">0xFFFFFF</span></span><span>); </span><span><span class="hljs-comment">// 白色背景</span></span><span>
</span></span>在這裡,我們指定了旋轉角度為90 度,並且背景顏色為白色( 0xFFFFFF表示白色的十六進制值)。
旋轉完成後,我們將圖像輸出為JPEG 格式。為了保持圖像質量,我們可以指定壓縮質量(0 到100 之間的整數,100 表示無壓縮)。
<span><span><span class="hljs-title function_ invoke__">imagejpeg</span></span><span>(</span><span><span class="hljs-variable">$rotatedImage</span></span><span>, </span><span><span class="hljs-string">'rotated_example.jpg'</span></span><span>, </span><span><span class="hljs-number">90</span></span><span>); </span><span><span class="hljs-comment">// 90 為輸出質量</span></span><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>將以上的代碼整合成一個完整的PHP 腳本,示例如下:
<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">// 旋轉圖像 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">0xFFFFFF</span></span><span>);
</span><span><span class="hljs-comment">// 輸出圖像為 JPEG 格式,質量為 90</span></span><span>
</span><span><span class="hljs-title function_ invoke__">imagejpeg</span></span><span>(</span><span><span class="hljs-variable">$rotatedImage</span></span><span>, </span><span><span class="hljs-string">'rotated_example.jpg'</span></span><span>, </span><span><span class="hljs-number">90</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-keyword">echo</span></span><span> </span><span><span class="hljs-string">"圖像旋轉完成並已保存為 rotated_example.jpg"</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>旋轉角度: 旋轉角度必須是度數。例如,90 度是將圖像順時針旋轉四分之一圈,180 度是旋轉半圈,-90 度是逆時針旋轉。
背景顏色: 如果旋轉後的圖像產生了透明的區域, imagerotate會用指定的背景顏色填充這些區域。你可以通過imagecolorallocate函數定義任何顏色。
圖像類型: 雖然本例中使用了JPEG 格式,但你也可以使用imagecreatefrompng或imagecreatefromgif等函數處理其他格式的圖像,旋轉操作本身是獨立於圖像格式的。
使用PHP 的imagerotate函數可以非常方便地旋轉圖像,並且可以通過簡單的代碼將旋轉後的圖像保存為JPEG 格式。結合其他GD 庫的函數,你可以實現更加複雜的圖像處理操作。希望本文的示例能幫助你在項目中有效地處理圖像旋轉。