如何同时使用枕头蟒蛇存储到磁盘之前得到的KB图片大小?

问题描述 投票:3回答:2

我用枕头在Python中的图像处理,

url="http://www.image.com/some_image.jpg";

path = io.BytesIO(urllib.request.urlopen(url).read())

original_image = Image.open(path)

任何想法如何,我可以得到使用枕头这个图像文件的大小?我想它存储到磁盘之前,以处理尺寸的图像

python python-imaging-library pillow
2个回答
1
投票

答案是要依赖于你保存什么格式的图像,所以最准确的办法是沿着线:

>>> out = io.BytesIO()
>>> original_image.save(out, format='png')
>>> out.tell()
# size in bytes

如果你想在未被压缩的像素数据的大小,你需要知道有多少位都在像素。我不相信这是在枕头暴露出来,你就必须使用查找和original_image.mode参考Unpack.c该值。然后,它只是width * height * bytes_per_pixel。如果您的图像使用的调色板,它变得更加复杂,我只希望使用第一种方法推荐。


0
投票

我碰到这个问题,其搜索同样的要求,跌跌撞撞。我试图通过kalhartt建议的方法,但它给了我不同的值。使用os.stat似乎提供准确的价值。下面是这两种方法和输出代码。

from PIL import Image
import io, os

print('*** Program Started ***')

image_path_input = '/github/python-01-utilities/image/input/'
image_name_input = '20170708-sky-1873934_1920.jpg'

im = Image.open(image_path_input + image_name_input)

print(im.format, im.size, im.mode)
# print(im.getdata(),im.filename, im.width, im.height, im.info)

# im.show()
out = io.BytesIO()
im.save(out, format='png')
print('File size using io.BytesIO : ',out.tell())

print('File size using os.stat    : ',os.stat(image_path_input + image_name_input).st_size)

print('*** Program Ended ***')

这里是输出

JPEG (1920, 1285) RGB
File size using io.BytesIO :  977359
File size using os.stat    :  147162

实际文件大小为147.2 KB(在Ubuntu GUI中显示)。您可以看到,这里os.stat给出正确的值。

© www.soinside.com 2019 - 2024. All rights reserved.