etlclb の文字データを読み込もうとしているのですが、Pillowの機能が使えません。
Specification of ETL-9 – etlcdb
Python2.7
1import struct 2from PIL import Image, ImageEnhance 3 4filename = 'ETL9G/ETL9G_01' 5id_record = 0 6sz_record = 8199 7with open(filename, 'r') as f: 8 f.seek(id_record * sz_record) 9 s = f.read(sz_record) 10 r = struct.unpack('>2H8sI4B4H2B34x8128s7x', s) 11 print r[0:14], hex(r[1]) 12 iF = Image.frombytes('F', (128, 127), r[14], 'bit', 4) 13 iP = iF.convert('P') 14 fn = 'ETL9G_{:d}_{:s}.png'.format((r[0]-1)%20+1, hex(r[1])[-4:]) 15 #iP.save(fn, 'PNG', bits=4) 16 enhancer = ImageEnhance.Brightness(iP) 17 iE = enhancer.enhance(16) 18 iE.save(fn, 'PNG')
これを実行すると、
(1, 12321, 'A.TSUGU ', 1, 0, 0, 0, 0, 0, 0, 8212, 8310, 0, 0) 0x3021
AttributeErrorTraceback (most recent call last)
<ipython-input-21-32b849e13da4> in <module>()
10 r = struct.unpack('>2H8sI4B4H2B34x8128s7x', s)
11 print r[0:14], hex(r[1])
---> 12 iF = Image.frombytes('F', (128, 127), r[14], 'bit', 4)
13 iP = iF.convert('P')
14 fn = 'ETL9G_{:d}_{:s}.png'.format((r[0]-1)%20+1, hex(r[1])[-4:])
AttributeError: 'module' object has no attribute 'frombytes'
というエラー我出ます。Imageクラスには、frombytesというメソッドは存在しないのですが、
Pillow 3.3.3 や、6.0.0 には、実装されています
なにが間違っているのでしょうか。
使用しているPillow のバージョンは以下のとおりです。
(chainer1-17-py27) user@machine01:~$ conda list Pillow
packages in environment at /homeuser/libraries/anaconda3/envs/chainer1-17-py27:
Name Version Build Channel
pillow 6.0.0 py27h34e0f95_0
または、
pillow 2.7.0 py27_1
で試しました。
あなたの回答
tips
プレビュー