在给定二进制字符串的情况下创建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
这是图像显示方式的一个示例,被剪切的量因图像而异
答案 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
中嵌套的语句后,文件将自动关闭。这样可以确保您不会忘记关闭它并泄漏文件描述符。