影像器材周邊 - 無失真JPEG圖片旋轉工具 (無痛旋轉) - 相機

前往內容


無失真JPEG圖片旋轉工具 (無痛旋轉)

不知道大家有沒有這樣的困擾,當我使用不同軟體觀看我的20D加手把"直拍"的照片,會有底下這幾種情況。
case 1. 在20D上顯示時,圖片會自動轉正
case 2. 傳到我的NB(WinXp SP2)後,以檔案總管加縮圖模式顯示時,圖片不會自動轉正
case 3. 以ACDSee 7.0顯示時,圖片會自動轉正
case 4. 以Photoshop 7.0.1顯示時,圖片不會自動轉正
case 5. 以PhotoImpact 8.0顯示時,圖片不會自動轉正

20D有內建orientation sensor,當你拍完一張圖片時,你拿相機的方式同時也被紀錄在EXIF裡。case 2, 4, 5這幾個軟體並沒有根據EXIF裡的orientation tag顯示圖片,所以才會有這樣的問題。(你可以在http://jpegclub.org/exif_orientation.html找到有關EXIF oritentation tag的詳細資訊)

從這邊我們可以知道,一個JPEG圖片在顯示時,必須同時滿足底下三個條件,使用者才有辦法看到一個角度無誤的圖片:
1. JPEG裡的影像資料本身的角度(pixel的排列方式)
2. JPEG裡EXIF的orientation tag
3. 顯示軟體要根據EXIF的orientation tag顯示圖片

正常的情況下,我的20D所拍出來的JPEG圖片,其影像資料本身的角度是0度,EXIF/orientation tag也是0度,不管用那一套軟體都可以正確地顯示。當我用20D加手把"直拍"的情況下,JPEG圖片其影像資料本身的角度是+90度,EXIF/orientation tag也是+90度,如果顯示軟體沒有根據orientation tag顯示,那我們看到的就是沒有轉正的圖片。為了確保所有軟體都能夠顯示,最保險的方式就是將JPEG影像資料轉成0度,同時將orientation tag也設成0度。


由於自己經常需要將拍好的圖片傳給朋友,又不確定他們的顯示軟體有沒有辦法正確地顯示圖片,因此一直在找一個兼具[自動旋轉],[不影響圖片品質]以及[保留所有EXIF資訊]的工具。

我試過底下幾個軟體
1. WinXP檔案總管的[逆時鐘旋轉]: 無法保留所有EXIF資訊
2. ACDSee 7.0: 影響圖片品質也無法保留所有EXIF資訊
3. Photoshop 7.0.1: 影響圖片品質也無法保留所有EXIF資訊
4. PhotoImpact 8.0: 影響圖片品質也無法保留所有EXIF資訊


今天終於讓我找到這樣的小工具,就是jhead加jpegtran(command line tools)。
jhead可以根據jpeg圖片的orientation tag資訊,以jpegtran重新排列圖片中的壓縮資料,並將orientation tag設成0度。經轉換的JPEG圖片所有軟體都可以正確顯示,而且不會影響到品質同時保留所有EXIF的資訊。
jhead的詳細資訊 http://www.sentex.net/~mwandel/jhead/
jpegtran的詳細資訊 http://linuxcommand.org/man_pages/jpegtran1.html

分別下載jhead以及jpegtran至C:\WINDOWS\system32目錄下

使用方式:
開啟[命令提示字元視窗],底下的例子自動將c:\pix\底下所有圖片自動轉正
jhead -autorot c:\pix\*.jpg

我也都是用 IrfanView 再看圖與轉檔。
在電腦上的原圖都維持原圖,用IrfanView看圖的時候勾選 "Auto-rotate image according to EXIF info"的選項
,秀圖的時候就會自動轉正圖檔。
若此選項勾選的話在轉檔的時候就會自動旋轉圖片了,另外也可以設定要不要保留EXIF資訊。
(對於已經旋轉正過的圖片,在瀏覽的時候還設定自動轉正的話就會呈現為錯誤的角度。)
不過似乎是重新壓縮圖檔,多少對畫質會有影響。
若jpegtran可以在不影響畫質的情況下旋轉圖片,那就很推薦囉。
Flickr Album: http://www.flickr.com/photos/ycchang Blog: http://bartstalk.blog
非常有智慧的實用小工具,但和多數的linux軟體一樣,空有很好的功能,卻有一個非常不友善的UI。

無福消受。

------------------------------------------------------
C:\Documents and Settings\Administrator>jhead -autorot C:\Documents and Settings
\Administrator\桌面\隨手亂拍\2006_0318_park\org(RAW)\Develops\*.jpg


Skipping readonly file 'C:\Documents'
Skipping readonly file 'and'
Error: No files matched 'Settings\Administrator\桌面\隨手亂拍\2006_0318_park\org(RAW)\Develops\*.jpg'
------------------------------------------------------

先不管為何會發生skipping及如何排除這個問題。
單單要鍵入或copy這一大串紅字,就可以搞死多數的非鍵盤指令使用者了。
erc wrote:
非常有智慧的實用小工...(恕刪)


C:\Documents and Settings\Administrator>jhead -autorot "C:\Documents and Settings\Administrator\桌面\隨手亂拍\2006_0318_park\org(RAW)\Develops\*.jpg"

加上雙引號應該可以排除這個問題!
至於目錄問題,我的習慣是從檔案總管的[網址列]copy目錄到命令視窗,或是直接從檔案總管把目錄拖拉到命令視窗,這樣是比直接輸入快些,但是對大部分的使用者來說,這樣的介面的確不太友善。

請問IrfanView + plugin的無失真旋轉功能,可否一次針對一個目錄底下的影像做調整嗎?還是只能針對瀏覽的那一張?
最近改用 FastStone Image Viewer(無料 Freeware)
它的 JPEG Lossless rotation 跟 IrfanView 一樣
在 Thumbnail View 時一次可選多檔案 然後老鼠右鍵選單選擇旋轉 (JPEG Lossless Rotate)
而且 FastStone Image Viewer 還可以自動根據 EXIF 的旋轉方向自動旋轉顯示

IrfanView 有個缺點很令人討厭
它每次更新檔案 (好比說旋轉一張照片後) 便需要重新更新所有的 Thumbnail 顯示
如果你有 1000 張照片的話 那會相當慢

FastStone Image Viewer 的介面相當漂亮
當你全螢幕看照片時 螢幕上下左右都有隱藏式選單
跟 iPhoto 功能有點像
尤其要看 EXIF 資訊相當方便
為了讓這個小工具能夠更方便使用,剛上http://my.execpc.com/~sfritz/shellext-tut/這個網站,花了一些時間學習如何把這個小工具嵌在檔案總管裡的[Context Menu]。

安裝步驟:
1. 附加壓縮檔解開將jhead以及jpegtran拷貝至C:\WINDOWS\system32
2. 將lossless_auto_rotate.reg的資訊加到registry中(直接執行)


使用方式:
1. 使用檔案總管,將滑鼠移至預處理的目錄,按右鍵後會出現context menu,裡面會有一個[無失真自動旋轉]選項


2. 點選[無失真自動旋轉]之後便會出現處理中的畫面


3. 處理結束後,所有圖片都已經正確地旋轉了



lossless_auto_rotate.reg的內容如下:
==========================================
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\shell\Lossless.Rotate]
@="無失真自動旋轉"

[HKEY_CLASSES_ROOT\Directory\shell\Lossless.Rotate\command]
@="cmd.exe /c cd \"%1\" && jhead -autorot *.jpg"
============================================

備註:
1. 如果你覺得[無失真自動旋轉]這個命名很爛,你可以編輯成你要的名稱
2. 如果你是WIN95使用者,請將cmd.exe改成command.com
3. 只能處理目錄裡那一層的JPEG檔
4. 這樣應該友善多了


附加壓縮檔: 200603/mobile01-35e4788bcf557d669d4edde84b4bc3df.zip
hwahwa wrote:
為了讓這個小工具能夠...(恕刪)


哇喔喔~~
這個讚耶~~~
支持一下^Q^

1頁 (共6頁)

前往