在python中从二进制数据保存JPG图像的问题

时间:2019-01-15 01:46:50

标签: python python-3.x

在给定二进制字符串的情况下创建JPG图像的函数遇到问题。该程序会快速连续保存两个图像,第一个是〜300kb,第二个是同一图像的裁剪版本,大约〜30kb

第一个(较大)图像始终可以正确保存,但是有时第二个图像(可能是4合1)会被切掉一半,图像的下部为浅灰色。在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

这是图像显示方式的一个示例,被剪切的量因图像而异

1 个答案:

答案 0 :(得分:0)

听起来您的文件在关闭前没有被刷新。当您关闭它时,它应该自动发生。您的代码似乎缺少关闭调用的(),例如应该是

file.close()

不过,处理文件对象的更多Python方式是使用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中嵌套的语句后,文件将自动关闭。这样可以确保您不会忘记关闭它并泄漏文件描述符。