我试图解压缩包含一些元数据和图像的结构。它是所有的比特,但内容的打包方式非常奇怪。它们不是在一个字节上对齐元素,而是每6位对齐一次。文件格式和内容如下图所示,也可以通过以下链接访问:http://etlcdb.db.aist.go.jp/etlcdb/etln/form_c.htm。
我感兴趣的唯一字段是JIS代码和最后一个字段的16个灰度图像数据。此数据来自http://etlcdb.db.aist.go.jp/etlcdb/etln/etl4/etl4.htm。
我面临的主要问题是这些字段是6位对齐的。我不知道如何正确解开结构。
另外,对于PIL,它还不清楚如何处理4位图像。模式1没有按预期正常工作..
import struct
from PIL import Image, ImageFont, ImageDraw
filename = 'ETL4/ETL4C'
skip = 0
record_size = 2952
with open(filename, 'r') as f:
f.seek(skip * record_size)
s = f.read(record_size)
r = struct.unpack('>9x1i203x2736s', s)
print r[1]
i1 = Image.frombytes('1', (72, 76), r[1], 'raw')
# fn = 'ETL9B_{:d}_{:d}.png'.format((r[0]-1)%20+1, hex(r[1])[-4:])
fn = 'name1.png'
i1.save(fn, 'PNG')