php 5.0 不能使用 exif_read_data() 解決方法
修改php.ini
STEP1:開啟php.ini
STEP2:找到「extension=php_exif.dll」
STEP3:將「extension=php_exif.dll」剪下,放到「extension=php_mbstring.dll」下面,儲存php.ini
STEP4:重新啟動 Apache
-----------------------------------------
exif_read_data () 從 JPEG 或 TIFF 文件中讀取 EXIF 頭信息。
每張拍攝好的相片都存在的相關資訊如拍攝時間、像素、光圈、角度等
想要透過php抓取這些資訊就要透過exif_read_data()函數
這次因為我要知道使用者拍照後照片儲存在伺服器中的相片是橫的還是直的,所以找到這些方式處理。
使用exif_read_data()抓取相關資訊列表
$exif = exif_read_data("123.jpg", 0, true);
foreach ($exif as $key => $section) {
foreach ($section as $name => $val) {
echo "$key.$name: $val<br />\n";
}
}
顯示結果:
其中IFD0 裡的 Orientation 顯示的數字 正是我需要知道照片方向
1: 一般照片
2: 水平翻轉
3: 180度往左轉
4: 重直翻轉
5: 重直翻轉 + 90度往右轉
6: 90度往右轉
7: 水平翻轉 + 90度往右轉
8: 90度往左轉
使用imagerotate()選轉相片圖片角度
$fp=imagecreatefromjpeg($pname);//開啟原始圖檔
$rotate =imagerotate($fp,270,0); //設定旋轉角度為270度
imagejpeg($rotate,$pname,100)//輸出圖片
imagedestroy($rotate);//釋放記憶體
我發現旋轉輸出後的圖片他的exif資訊會消失,這點要注意
ini_set('memory_limit', '256M');//處理上傳檔案解決記憶體空間不足問題
參考資料
http://ms7.fhsh.tp.edu.tw/php5c/function.exif-read-data.html
http://blog.csdn.net/u012275531/article/details/15336589
http://www.phpstudy.net/php/943.html