python - 在 python 中从二进制数据保存 JPG 图像时出现问题

标签 python python-3.x

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

第一个(较大的)图像始终可以正确保存,但是第二个图像有时(可能是四分之一)会被一半切断,图像的下部是纯灰色的。在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

/image/TFVvu.jpg

这是图像结果的示例,被剪切的量因图像而异

最佳答案

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

file.close()

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

关于python - 在 python 中从二进制数据保存 JPG 图像时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54191653/

相关文章:

python - 从检查点恢复时,如何更改参数的数据类型?

python - 如何在 Django 2 中实现 Django-Private-Chat

python - 常规热图有效,但图工厂热图在 Plotly 中失败

python - 从字符串中提取哈希数字

python - CherryPy:如何在更新数据时停止和缓冲传入请求

python - 从另一个通用 lambda 参数推断通用 lambda 参数

django - 验证 DRF 序列化程序中的特定字段

python - 避免将重复项添加到存储在数据库中的列表的更好方法是什么

python - 在 Python 中打印两个数字的数字连接

python - 如何将Python Socket对象传递给用C编写的DLL?