У меня проблемы с функцией, которая создает изображения в формате 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
Это пример того, как получаются изображения, количество среза меняется от изображения к изображению
Похоже, ваш файл не стирается перед закрытием. Это должно произойти автоматически при закрытии. Ваш код, по-видимому, отсутствует() для закрытия вызова, например, он должен быть
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
. Это гарантирует, что вы не забудете закрыть его и пропустить дескриптор файла.