Я пытаюсь проверить bytearray с Image.open
и Image.verify()
, не записывая его сначала на диск, а затем откройте его с помощью im = Image.open()
. Я посмотрел на методы .readfrombuffer()
и .readfromstring()
, но там мне нужен размер изображения (который я мог получить только при преобразовании байтового потока в изображение).PIL: Преобразование Bytearray в изображение
Мои чтения Функция выглядит следующим образом:
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)
Если кто-то знает, что я делаю неправильно или если есть более элегантный способ конвертировать эти байты в изображение, которое действительно поможет мне.
P.S .: Я думал, что мне нужен bytearray, потому что я делаю манипуляции по байтам (сбой их изображений). Это действительно работало, но я хотел сделать это, не записывая его на диск, а затем снова открывая файл образа с диска, чтобы проверить, не сломался он или нет.
Edit: Все это дает мне это IOError: cannot identify image file
Почему вы не читаете изображение в массив numpy? –
@ViktorKerkez, потому что я хочу манипулировать байтами изображений. У меня есть рабочий код для части Manipulation, но теперь я хочу проверить, что выходное изображение на самом деле не полностью сломано. Так что я должен работать с bytearrays – ato