最初にディスクに書き込むかどうかに関係なく、bytearray を検証してImage.open
からImage.verify()
、 で開きますim = Image.open()
。.readfrombuffer()
andメソッドを見ました.readfromstring()
が、そこには画像のサイズが必要です (これは、バイトストリームを画像に変換するときにしか取得できませんでした)。
私の読み取り関数は次のようになります。
def readimage(path):
bytes = bytearray()
count = os.stat(path).st_size / 2
with open(path, "rb") as f:
print "file opened"
bytes = array('h')
bytes.fromfile(f, count)
return bytes
次に、基本的なテストとして、bytearray を画像に変換しようとします。
bytes = readimage(path+extension)
im = Image.open(StringIO(bytes))
im.save(savepath)
誰かが私が間違っていることを知っている場合、またはそれらのバイトを画像に変換するよりエレガントな方法があれば、本当に助けになります。
PS:バイトを操作するため(画像をグリッチする)、バイト配列が必要だと思いました。これはうまくいきましたが、ディスクに書き込んでディスクからイメージファイルを再度開いて壊れているかどうかを確認せずにやりたかったのです。
編集:それが私に与えるのはIOError: cannot identify image file