我使用Pillow在Python中进行图像处理,
url="http://www.image.com/some_image.jpg";
path = io.BytesIO(urllib.request.urlopen(url).read())
original_image = Image.open(path)
知道如何使用Pillow获取此图像文件的大小?我希望在将图像存储到磁盘
之前处理大小的图像答案 0 :(得分:1)
答案取决于您保存图像的格式,因此最准确的解决方案将是:
>>> out = io.BytesIO()
>>> original_image.save(out, format='png')
>>> out.tell()
# size in bytes
如果您想要未压缩像素数据的大小,则需要知道像素中有多少位。我不相信这在Pillow中暴露,您必须使用original_image.mode
和引用Unpack.c查找该值。然后它只是width * height * bytes_per_pixel
。如果您的图像使用调色板,它会变得更复杂,我建议只使用第一种方法。
答案 1 :(得分: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在这里给出正确的值。