У меня есть растровое изображение RGB 800x800, размер файла составляет 2501 килобайт, и я делаю следующее (используя 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 кб.И хотя размер файла различен, справедливо следующее:
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, найденной на изображениях Google, у большинства был тот же размер файла, что и у нового изображения, 1876 КБ, но также была по крайней мере одна, у которой был тот же размер файла, что и у исходного изображения, 2501 КБ.
В чем причина такой разницы в размерах файлов или как вы узнаете?