如何在 Python 中显示图像大小和文件名以及图像?
How to display image size and file name along with image in Python?
我有一个包含许多图像的文件夹,我只想显示 5 个具有大小和文件名的随机图像。到目前为止,我可以显示图像,但不确定如何添加大小和文件名。
images = [ PIL.Image.open(f) for f in glob("/content/gdrive/pics/*.jpg") ]
def imgmap(im):
if im.mode != 'RGB':
im = im.convert(mode='RGB')
return np.fromstring(im.tobytes(), dtype='uint8').reshape((im.size[0], im.size[1], 3))
np_images = [ imgmap(im) for im in images ]
visualize = random.sample(np_images, 5)
for img in visualize:
plt.figure()
plt.imshow(img)
你可以这样做
files = glob("/content/gdrive/pics/*.jpg")
然后
fileNames = [os.path.basename(path) for path in files]
和
fileSizes = [os.stat(path).st_size for path in files]
现在你有了包含文件名和文件大小的数组,希望你知道从那里要做什么。
获取文件大小
size = os.stat(f).st_size
获取没有目录的文件名
filename = os.path.basename(f)
你应该创建元组 (img, filename, size)
images = [ (PIL.Image.open(f).convert('RGB'),
os.path.basename(f),
os.stat(f).st_size)
for f in glob("/content/gdrive/pics/*.jpg") ]
在我的电脑上 plt.imshow()
可以显示 PIL.Image
所以我不必转换为 np.array
。但是如果你需要转换那么你可以在创建元组时进行转换。
images = [ (imgmap(PIL.Image.open(f).convert('RGB')),
os.path.basename(f),
os.stat(f).st_size)
for f in glob("/content/gdrive/pics/*.jpg") ]
稍后你可以把它们放在一起
visualize = random.sample(images, 5)
for img, name, size in visualize:
plt.figure()
plt.imshow(img)
plt.title(f"{name} - {size} bytes")
编辑:
代码可以更具可读性
def process(path):
img = imgmap(PIL.Image.open(path).convert('RGB'))
name = os.path.basename(path)
size = os.stat(path).st_size
return (img, name, size)
images = [ process(f) for f in glob("/content/gdrive/pics/*.jpg") ]
坦率地说,如果您只需要 5 张图像,那么可以先获取随机文件名,然后只处理这些文件名。
我有一个包含许多图像的文件夹,我只想显示 5 个具有大小和文件名的随机图像。到目前为止,我可以显示图像,但不确定如何添加大小和文件名。
images = [ PIL.Image.open(f) for f in glob("/content/gdrive/pics/*.jpg") ]
def imgmap(im):
if im.mode != 'RGB':
im = im.convert(mode='RGB')
return np.fromstring(im.tobytes(), dtype='uint8').reshape((im.size[0], im.size[1], 3))
np_images = [ imgmap(im) for im in images ]
visualize = random.sample(np_images, 5)
for img in visualize:
plt.figure()
plt.imshow(img)
你可以这样做
files = glob("/content/gdrive/pics/*.jpg")
然后
fileNames = [os.path.basename(path) for path in files]
和
fileSizes = [os.stat(path).st_size for path in files]
现在你有了包含文件名和文件大小的数组,希望你知道从那里要做什么。
获取文件大小
size = os.stat(f).st_size
获取没有目录的文件名
filename = os.path.basename(f)
你应该创建元组 (img, filename, size)
images = [ (PIL.Image.open(f).convert('RGB'),
os.path.basename(f),
os.stat(f).st_size)
for f in glob("/content/gdrive/pics/*.jpg") ]
在我的电脑上 plt.imshow()
可以显示 PIL.Image
所以我不必转换为 np.array
。但是如果你需要转换那么你可以在创建元组时进行转换。
images = [ (imgmap(PIL.Image.open(f).convert('RGB')),
os.path.basename(f),
os.stat(f).st_size)
for f in glob("/content/gdrive/pics/*.jpg") ]
稍后你可以把它们放在一起
visualize = random.sample(images, 5)
for img, name, size in visualize:
plt.figure()
plt.imshow(img)
plt.title(f"{name} - {size} bytes")
编辑:
代码可以更具可读性
def process(path):
img = imgmap(PIL.Image.open(path).convert('RGB'))
name = os.path.basename(path)
size = os.stat(path).st_size
return (img, name, size)
images = [ process(f) for f in glob("/content/gdrive/pics/*.jpg") ]
坦率地说,如果您只需要 5 张图像,那么可以先获取随机文件名,然后只处理这些文件名。