我正在讀取dpx格式的圖像文件,並且想要在頭的圖像部分中提取「方向」,並對其進行修改。我從來沒有試圖解釋二進制數據,所以我有點茫然。我試圖使用結構模塊,但我真的不知道如何正確地做到這一點。文件頭規格是在這裏:解碼圖像文件以提取圖像頭信息並對其進行修改(使用python)
http://www.fileformat.info/format/dpx/egff.htm
感謝。
我正在讀取dpx格式的圖像文件,並且想要在頭的圖像部分中提取「方向」,並對其進行修改。我從來沒有試圖解釋二進制數據,所以我有點茫然。我試圖使用結構模塊,但我真的不知道如何正確地做到這一點。文件頭規格是在這裏:解碼圖像文件以提取圖像頭信息並對其進行修改(使用python)
http://www.fileformat.info/format/dpx/egff.htm
感謝。
似乎有一個恆定的偏移方向,使,如果這是你想改變,那麼我會不會費事去解析它所有,只是找出偏移量(我認爲這只是GENERICFILEHEADER
的大小加上方向字的高字節的一個字節),並直接讀取/操作它。
使用bytearray將是我的第一選擇。
b = bytearray(your_byte_data)
big_endian = (b[0] == 0x52)
offset = 768 + big_endian
current_orientation = b[offset] # get current orientation
b[offset] = new_offset # set it to something new
open('out_file', 'wb').write(b)
你可能要考慮使用Imagemagic來做到這一點。開源並支持dpx格式。
嗨,寫入數據時:偏移取決於如果它在一個或大或小尾數格式,所以這樣的事情可能會爲你工作,改變由一個偏移值,我可以直接給它分配一個整數嗎?或者我需要以某種方式轉換?無論如何,你的解決方案似乎大部分工作。 – user443850 2011-03-09 21:55:54
是的,它可以工作,但由於某種原因,它沒有達到我的預期。我得到的值爲0,根據規範它可以得到一個從0到7的值,但是除0以外的任何其他值都不會被識別,但我想這與文件本身有關,而且您的解決方案非常棒。謝謝。 – user443850 2011-03-09 22:08:23