2

こんにちは、Python Imaging Library を使用して、画像への小さな変換を行っています。イメージは、16 ビットの符号なし整数を含む生のバイナリ ファイルです。何らかの理由で、Python を動作させることができず、次のエラーが表示され続けます。

    Traceback (most recent call last):
  File "C:\Users\Patrick\workspace\colorCorrect\src\editGrayscale.py", line 24, in <module>
    changed.save(saveFile)
  File "C:\Python27\lib\site-packages\PIL\Image.py", line 1423, in save
    raise KeyError(ext) # unknown extension
KeyError: '.bin'

私のコードは次のとおりです。

import Image
#file to save:  C:\Users\name\imagedata\visiblespec.bin

fileName = raw_input("Enter a file name: ")
saveFile = raw_input("Enter a new save file name: ")

with open(fileName, 'rb') as f:
im = Image.fromstring('L', (3032, 2016), f.read()) # also try 'L;16B', 'I;16', and 'I;16B'
changed = im.point(lambda i: i/2)

changed.save(saveFile)

繰り返しますが、私の画像はグレースケールの 16 ビット符号なし整数で、約 11 mbs で、16 進数で書かれています。

ありがとう!

アップデート:

ファイルを保存するために機能したコード:

def save(filename, contents):  
   fh = open(filename, 'w')  
   fh.write(contents)  
   fh.close() 

save(saveFile, final)
4

1 に答える 1

0

PIL の有効なモードはすべて、unpack.cファイルの下部にあるソース ファイルにリストされています。を含むものから始め16ます。

あなたの編集を考えると、他の問題があります。まず、PIL.Image はファイルを書き出すためのエンコーダーを決定する必要があり、ファイル名拡張子を使用してこれを行います。.binファイル拡張子が非標準であるため、使用する形式を知る方法がありません。のようなものを試してください.png

2 つ目の問題は、すべてのファイル タイプがすべての画像形式をサポートしているわけではないことです。保存する前に画像を変換する必要がある場合があります。

changed.convert('L').save(saveFile)

最後のコメントを考えると、値を生のフォーマットファイルに書き戻したいだけです。'raw'形式を試すか、tostring自分でファイルに書き込むために使用できます。

changed.save(saveFile, 'raw')
于 2012-06-07T17:07:03.653 に答える