照片方向不對或顛倒, 到底發生了甚麼事


用手機拍照很容易發現這個現象, 因為容易顛倒轉向180度. 用照相機拍照比較不容易發現, 因為很少人會把相機底朝天那樣拍, 最多就是橫拍或直拍.

但是存到網站或者用 WINDOWS 電腦看, 就容易發現, 為什麼照片直拍的變成橫躺了, 或者手機拍的照片有些上下顛倒了.

其實喜歡用 APPLE 產品的人, 在這問題上是並沒有困擾, 甚至從來不察覺, 原因是 APPLE 做得很好, 使用者不會遇到困擾, 你每次看照片, 她都根據 EXIF 紀錄的拍照方向給你正確重現.

反過來看 WINDOWS 的使用者, 經常看到這種問題, 而且, 坊間很多 “自認為好的方法", 教你把顛倒或者橫躺的照片給她用一些軟體給改正, 然後就看到 “正常方向的照片".

不過呢, 偶然傳到一些網站或者放到其他地方看, 有機會出現更奇怪的顛倒現象.

這是重點, 照片的原始檔案, 千萬不要用任何坊間軟體去修正它的方向, 特別是 WINDOWS 自帶的那個 PICTURE VIEWER. 一旦用了, 照片的 EXIF 資訊會被破壞, 原始檔就毀了.

那是甚麼原因照片會看來顛倒了, 其實很多人都研究就過了, 就是 MICROSOFT 的 WINDOWS 不支持這種使用上的需要, 原因不明. http://support.microsoft.com/kb/2001954

另外的原因, 這個人研究最詳細, 充分說明了照片上傳網站後看到的顛倒旋轉的問題所在

http://www.daveperrett.com/articles/2012/07/28/exif-orientation-handling-is-a-ghetto/

.
GIT 上給源碼 (沒有確認過)
https://github.com/recurser/exif-orientation-examples

.

.

另外這個連 PHP 劇本都寫好了, 管理網站的話可抄來試試看, 應該是自動偵測照片在EXIF內的方向資料, 然後顯示出正確的照片方向.

http://janochen.blogspot.tw/2008/09/exif-orientation.html

<?php
  // exif_auto_rotation.php?file=1.JPG
  if (!isset($_GET['file'])){
    exit;
  }
  $file = $_GET['file'];
  $image = new Imagick();
  if ( $image->readImage($file) !== false) {
    $exif = exif_read_data($file);
    switch ($exif['Orientation']) {
      case 1: // 水平(一般)
        break;
      case 2: // 水平鏡像
        $image->flopImage();
        break;
      case 3: // 翻轉180度
        $image->rotateImage(new ImagickPixel(), 180);
        break;
      case 4: // 垂直鏡像
        $image->flipImage();
        break;
      case 5: // 水平鏡像後,順時鐘翻轉270度
        $image->flopImage();
        $image->rotateImage(new ImagickPixel(), 270);
        break;
      case 6: // 順時鐘翻轉270度
        $image->rotateImage(new ImagickPixel(), 270);
        break;
      case 7: // 水平鏡像後,順時鐘翻轉90度
        $image->flopImage();
        $image->rotateImage(new ImagickPixel(), 90);
        break;
      case 8: // 順時鐘翻轉90度
        $image->rotateImage(new ImagickPixel(), 90);
        break;
      default: // 讀取 EXIF Orientation 錯誤
        exit;
        break;
    }
    header('Content-type: ' . image_type_to_mime_type(exif_imagetype($file)));
    echo $image;
  } else {
    // 圖檔讀取錯誤
  }
?>

.

.

如果堅持只用 WINDOWS 看照片 (NOTEBOOK 或桌機, 沒有用WINDOWS PHONE) , 也不想手工改正照片的方向, 有甚麼辦法呢 ? 不是說千萬不要用任何坊間軟體去修正它的方向, 特別是 WINDOWS 自帶的那個 PICTURE VIEWER嗎?!

看圖識字, WIN7的電腦用 FIREFOX / CHROME, 都可以自動顯示正確的不顛不倒的照片, 同樣WIN7電腦, IE 和 PICTURE VIEWER 就不行. 如果在用 WIN8.1的電腦, 應該不會發現這樣的問號, 畢竟WIN8是 WINDOWS 智慧手機的開端, Microsoft 沒理由繼續忽略這樣的問題. 理解了這個現象後, 也順利解決了 FAX 韌體裡面那個圖片旋轉後比例不對的 BUG, 那是遠在 ANDROID 還沒有出現之前就遇到的, 但當時一直沒有合理的解釋.

nEO_IMG_why_photo_orientation_disordered

廣告

2 thoughts on “照片方向不對或顛倒, 到底發生了甚麼事

  1. 板大你好,看到你有自己在刻蝕PCB板子,因為專題的關係有想要自己刻蝕一些板子,想請問版大可不可以幫忙協助板子的製作?願意付工錢,如果有意願的話還懇請回復,謝謝。

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s