2012-01-11 81 views
2

我使用PythonMagick縮放和旋轉一些JPEG。理想情況下,我也可以更新EXIF Orientation標籤。但是,雖然我可以檢索此標記的值,但似乎無法修改它。試想一下:如何更改EXIF方向標籤(最好使用PythonMagick)?

from PythonMagick import Image 

i = Image("image.jpg") 
print i.attribute("EXIF:Orientation") 
i.attribute("EXIF:Orientation", "5") 
i.write("image-modified.jpg") 

運行此顯示圖像的原始方向:

[email protected]:/tmp$ python broken.py 
6 
[email protected]:/tmp$ 

而且,只要它不是5,首先,exiftool將證明,新的文件一直沒有其調整方向:

[email protected]:/tmp$ exiftool image.jpg | grep Orient 
Orientation      : Rotate 90 CW 
[email protected]:/tmp$ exiftool image-modified.jpg | grep Orient 
Orientation      : Rotate 90 CW 
[email protected]:/tmp$ 

爲什麼ImageMagick不寫出修改的方向?我怎樣才能得到它?

+0

我寫我自己的圖像代碼,所以我不熟悉imagemagick或pythonmagick,但你要做的事情很簡單。既然你不添加或刪除一個EXIF標籤,你只是在原地改變它的值,那麼爲什麼不把它作爲二進制文件讀取,修改需要修改的單字節並將其寫回呢?有問題的標籤(0x112)很容易用很少的代碼找到。 – BitBank 2012-01-11 19:19:07

+1

我當然可以,但是我希望我不需要解釋爲什麼我會**更喜歡找到一個具有高級API的庫來處理這個問題。 – 2012-01-12 03:03:09

+0

我明白你的動機,如果我可以自己編寫代碼,我只是厭惡使用額外的庫/圖層,因爲你總是遇到干擾你的項目的限制或錯誤。 – BitBank 2012-01-12 15:29:10

回答

1

這個問題是類似於:Exif manipulation library for python

此外,見:Copying and Writing EXIF information from one image to another using pyexiv2

上面涉及使用pyexiv2讀寫EXIF數據。我意識到這不是使用PythonMagick,但它使用「高級」python庫來編寫EXIF數據,至少據我所知,目前是最好的(唯一的)解決方案。

看來ImageMagick是有能力的,所以也許有人可以在這裏展開它如何從python完成;看:How do I add exif data to an image?