Проблема сохранения изображений JPG из двоичных данных в Python

1

У меня проблемы с функцией, которая создает изображения в формате JPG с заданной двоичной строкой. Программа сохраняет два изображения в быстрой последовательности, первое - ~ 300 КБ, а второе - обрезанная версия того же изображения, около ~ 30 КБ.

Первое (большее) изображение всегда сохраняется правильно, однако второе изображение иногда (возможно, 1 в 4) обрезается наполовину, при этом нижняя часть изображения является плоской серой. Открывая изображение в notepad++, похоже, что данные просто внезапно перестают записываться

Функция, которая создает изображения:

def writeImage(imageData, decoded, imageNumber, config):
    if imageNumber == 1:
        imageSavePath = image1name
    elif imageNumber == 2:
        imageSavePath = image2name
    print(imageSavePath)
    file = open(imageSavePath, 'w+b')
    file.write(imageData)
    file.close

https://i.imgur.com/T4WSOEX.jpg

Это пример того, как получаются изображения, количество среза меняется от изображения к изображению

Теги:
python-3.x

1 ответ

0

Похоже, ваш файл не стирается перед закрытием. Это должно произойти автоматически при закрытии. Ваш код, по-видимому, отсутствует() для закрытия вызова, например, он должен быть

file.close()

Однако более питонический способ обработки файлового объекта - использование оператора with в качестве диспетчера контекста. Так что код будет выглядеть так

def writeImage(imageData, decoded, imageNumber, config):
    if imageNumber == 1:
        imageSavePath = image1name
    elif imageNumber == 2:
        imageSavePath = image2name

    print(imageSavePath)

    with open(imageSavePath, 'w+b') as file:
        file.write(imageData)

Файл автоматически закроется, когда вы закончите выполнять операторы, вложенные в with. Это гарантирует, что вы не забудете закрыть его и пропустить дескриптор файла.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню