在處理從手機或數碼相機拍攝的照片時,常常會遇到照片旋轉不正確的問題。為了確保照片上傳到網站或進行其他操作時能夠顯示正確,我們可以利用PHP和Exif擴展來提取並修復照片的旋轉角度。
在開始之前,請確保您的服務器已安裝PHP Exif擴展。如果尚未安裝,可以通過以下命令進行安裝:
<span class="fun">sudo apt-get install php-exif</span>
安裝完成後,別忘了在php.ini文件中啟用Exif擴展,方法是取消註釋extension=exif 。
啟用Exif擴展後,我們可以通過PHP代碼讀取照片的Exif元數據,其中包括旋轉角度。
首先,使用exif_read_data()函數讀取照片的Exif數據:
<span class="fun">$exif = exif_read_data('path/to/photo.jpg');</span>
一旦讀取到Exif數據,我們可以通過訪問$exif['Orientation']來獲取照片的旋轉信息。 Exif中的旋轉角度通常使用整數表示,其具體含義如下:
我們可以根據這些數值來計算出正確的旋轉角度:
function getPhotoRotation($exifOrientation) {
switch ($exifOrientation) {
case 3: $rotation = 180; break;
case 6: $rotation = 90; break;
case 8: $rotation = -90; break;
default: $rotation = 0;
}
return $rotation;
}
提取出旋轉角度後,接下來我們可以使用PHP的GD庫來進行實際的圖像旋轉。
首先,利用imagecreatefromjpeg()函數加載照片:
<span class="fun">$image = imagecreatefromjpeg('path/to/photo.jpg');</span>
然後,使用imagerotate()函數進行旋轉處理:
<span class="fun">$rotatedImage = imagerotate($image, $rotation, 0);</span>
最後,使用imagejpeg()將旋轉後的照片保存到文件:
<span class="fun">imagejpeg($rotatedImage, 'path/to/rotated-photo.jpg');</span>
通過使用PHP和Exif擴展,我們能夠輕鬆提取照片的旋轉角度,並藉助GD庫進行圖像旋轉處理。這種方法不僅可以確保照片旋轉正確,還能有效避免上傳照片時出現顯示錯誤的問題。