在图像(dpx)fi中按阵列偏移量计算

2024-05-16 16:22:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我经常读二进制数据。但是我从来没有真正了解过系统在使用bytearray时如何推断偏移量。在

在本例中,我正在处理一个dpx文件,并试图更改位于定向标题中的aspectratio。 在此处找到相关文件信息:http://www.fileformat.info/format/dpx/egff.htm

我知道斯科特·格里菲斯在这个问题上有一篇很好的帖子 然而,我从来没有真正理解到将这些知识转换为在GENERICFILEHEADER之外的其他头下修改内容

那么我们应该如何改变体形呢。在这件事上任何帮助都将不胜感激。在

干杯


Tags: 文件数据信息http标题系统www二进制
1条回答
网友
1楼 · 发布于 2024-05-16 16:22:31

有一个很好的文件叫做“数字动态图像交换的文件格式”,我想可以帮你。我不知道官方版本在哪里,但是有一个版本是here。在

总之,下面是一个代码片段,可以用来更改像素纵横比:

import struct

fp = open('file.dpx', 'r+b')
fp.seek(1628) #Set the offset to the pixel aspect ratio field

#Prints out the current pixel aspect ratio. 
#Assumes big-endian   Check the magic number for your use case
print struct.unpack_from('>I', fp.read(4))[0] #horizontal pixel aspect ratio
print struct.unpack_from('>I', fp.read(4))[0] #vertical pixel aspect ratio

#Change the aspect ratios to new values.  Again assumes big-endian
fp.seek(1628) #Return to the proper offset for aspect ratio
new_horizontal = struct.pack('>I', 4L) 
new_vertical = struct.pack('>I', 3L) 
fp.write(new_horizontal) #set the new horizontal pixel aspect ratio to 4
fp.write(new_vertical) #set the new vertical aspect ratio to 3
fp.close()

此代码假定您尚未读取文件头和图像头。文件头为768字节,图像头为640字节。在AspectRatio之前的定向头中有几个字段:XOffset、YOffset、XCenter、YCenter、XOriginalSize、YOriginalSize、FileName、TimeDate、InputName、InputSN和Border。这些字段的字节长度分别为4、4、4、4、4、100、24、32、32和8;总计220个。AspectRatio的偏移量是这些字段的总和:768+640+220=1628。在

这是很难计算出正确的偏移量的方法。如果你只看上面列出的.pdf文件就容易多了。它列出了表中的所有字段偏移量:p

相关问题 更多 >