Я работаю с Python 3, и у меня возникла странная проблема с pdfminer (.six).Я использую код, подобный OP в этом вопросе: Python pdfminer extract image производит несколько изображений на странице (должно быть одно изображение)
#ltimageobject is an object obtained from the previous script
from PIL import image
im =Image.frombytes(mode="1",\
data = ltimageobject.stream.data,\
size = ltimageobject.srcsize,\
decoder_name='raw')
Workingmethod = im.save("new_fromIm.jpg")
#ltimageobject.stream.get_data() would also work to obtain data.
#get_rawdata() or rawdata won't work.
, но я ничего не могу получить от записифайл данных в байтах.
with open("new_decoded.jpg", "wb") as new:
new.write(im.tobytes(encoder_name="raw"))
#this doesn't work
with open("new_decoded2.jpg", "w", encoding=codecs.open("raw")) as new:
new.write(av)
#this doesn't work either
Файлы немного короче (1215 байт вместо 1247 байт), и я предполагаю, что в них есть все, что нужно, чтобы обернуть изображение в недостающие байты.Я точно указал, что нашел правильный режим с помощью следующего фрагмента:
encoders = Image.ENCODERS
print(encoders)
for mode in encoders:
try:
print(Image.frombytes(mode=mode, data = savelt.stream.data, size = savelt.srcsize,\
decoder_name='raw'))
except Exception as x:
#print("fail on mode {}: {}".format(mode, x))
continue
Обратите внимание, что ltimageobject.srcsize = / = (int (ltimageobject.height, int (ltimageobject.width))
Что я делаю неправильно, когда хочу использовать запись в байтовом файле? Это должен быть быстрый и грязный метод, но это должно сработать. Я уверен, что не могу найти магическое число b "\ xff \ xd8" вначало данных.