【问题标题】:Opening and saving of bitmap images with python affects filesize使用 python 打开和保存位图图像会影响文件大小
【发布时间】:2018-06-03 22:14:00
【问题描述】:

我有一个 800x800 RGB 位图,文件大小为 2501 KB,并执行以下操作(使用 python 3.6):
(很遗憾我不能分享图片)

from PIL import Image
import numpy as np

im = Image.open('original_image.bmp')
im.save("test_size_manual.bmp", "BMP")

由于某种原因,新文件只有 1876 KB。即使文件大小不同,以下内容仍然成立:

import matplotlib.pylab as plt

original_image  = plt.imread('original_image.bmp')
test_size_image = plt.imread('test_size_manual.bmp')
assert (original_image == test_size_image).all()

这意味着每个像素得到的 numpy.ndarray 是相同的。从谷歌图像上发现的 800x800 bmp 的“随机”采样中,大多数与新图像具有相同的文件大小,1876 KB,但也至少有一个与原始图像具有相同的文件大小,2501 KB。
是什么导致了文件大小的这种差异,或者您将如何找出答案?

【问题讨论】:

标签: python image bitmap file-format


【解决方案1】:

答案确实在元数据中找到。 原始图像原来是 32 位位图,而新图像是 24 位位图。这解释了文件大小的差异:2501 * 3/4 略低于 1876。 在二进制偏移量 28 (0x1c) 处存储位深度,原始图像为 32,新图像为 24。
参考:BMP file format on Wikipedia

【讨论】:

    猜你喜欢
    • 2016-11-12
    • 1970-01-01
    • 1970-01-01
    • 2020-04-27
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 2011-02-05
    相关资源
    最近更新 更多