我必须存储/检索大量图像才能在我的程序中使用。 每个图像都很小:一个图标50x50,每个图像都关联一个字符串,该字符串是图标所关联的路径。
由于它们非常小,我在想是否有一些库可以将所有这些库存储在一个文件中。 我需要存储图像和路径字符串。
我不知道pickle是否是一个可能的选择 - 我也听说过更复杂的库,比如HDF5 ......
感谢您的帮助!
的Alessandro
答案 0 :(得分:4)
标准库中的 sqlite3 模块可以很好地完成工作。
照片很小,每个彩色平面2500位,它们很容易存储为数据库中的blob条目(存储为单个文件)。
答案 1 :(得分:0)
这可能更容易吗? (在这里被盗http://bytes.com/topic/python/answers/44238-pickle-image)
import Image, pickle, cStringIO
i = open('button_home.gif', 'rb')
i.seek(0)
w = i.read()
i.close()
dic = {'1':w,'2':w,'3':w,'4':w}
F=open('allicons.dat','w')
pickle.dump(dic,F)
F.close()
#Ok now you take your pickled string and unpickle your object and select
#the item you want and put it in a cStringIO or StringIO so we can open
#it directly with PIL.
F=open('allicons.dat','r')
o=pickle.load(F)
F.close()
one_im = o['1']
c = cStringIO.StringIO()
c.write(one_im)
c.seek(0)
im = Image.open(c)
im.show()
答案 2 :(得分:0)
你可以挑选一个将文件名与RGBA数据字节字符串相关联的字典。
假设您已使用PIL加载图像,请确保它们具有相同的大小和颜色格式。使用images[filename] = im.tostring()
构建一个dict并使用pickle dump()。使用Image.fromstring
和正确的大小和模式参数来恢复它。