我正在寻找一个可以从图像中提取(元)数据的Python库。我特别感兴趣的是获得图像的尺寸。 anybode能推荐一个好的图书馆吗?
使用案例:我正在尝试批量删除小于特定大小(1280x800像素)的单个文件夹中的图像(我使用os.remove
)。
答案 0 :(得分:1)
这里的一般结构。谷歌搜索帮助。
from PIL import Image
import os
for _image in os.listdir("image\folder"):
img = Image.open(_image)
height, width = img.size
if height < .... or width < .....:
os.remove(os.path.join("image\folder",_image)
答案 1 :(得分:0)
查看Python Imaging Library, especially the Image.size attribute。您还需要the os module, specifically os.remove之类的内容。
答案 2 :(得分:0)
这是一个很可能用于此类事情的简短示例,您必须安装PIL (http://www.pythonware.com/products/pil/)..
from PIL import Image
import glob
import os
# Get images that end in .jpg
for image_file in glob.glob('*.jpg'):
img = Image.open(image_file)
# get the image's width and height in pixels
width, height = img.size
if width < 1280 and height < 800:
os.unlink(image_file)
注意:如果PIL不支持您拥有的图像类型,您可以查看Imagemagick(它有一个python API) - unix file命令也会为您提供某些图像文件的信息。
答案 3 :(得分:0)
我认为它会是这样的:
import os
from PIL import Image #need to install python-imaging
path = "." #current dir
files = [ i for i in os.listdir(path) if os.path.isfile(os.path.join(path,i)) ]
print "Files found in the current dir:"+ ",".join(files)
for f in files:
try:
im=Image.open(f)
i,j = im.size
print "Image " + f + " size("+str(i)+","+str(j)+")"
if i < 1280 and j < 800:
print "Deleting "+f
os.remove(f)
except IOError:
print "The file " +f + " isn't an image"