mirror of
				https://github.com/flynx/ImageGrid.git
				synced 2025-11-03 04:40:10 +00:00 
			
		
		
		
	
		
			
	
	
		
			156 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			156 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 
								 | 
							
								#=======================================================================
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								__version__ = '''0.0.01'''
							 | 
						||
| 
								 | 
							
								__sub_version__ = '''20110930190347'''
							 | 
						||
| 
								 | 
							
								__copyright__ = '''(c) Alex A. Naanou 2011'''
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#-----------------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import time
							 | 
						||
| 
								 | 
							
								import uuid
							 | 
						||
| 
								 | 
							
								import pickle
							 | 
						||
| 
								 | 
							
								import pli.tags.tagset as tagset
							 | 
						||
| 
								 | 
							
								from pli.logictypes import OR, ANY
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#-----------------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# basic data:
							 | 
						||
| 
								 | 
							
								# 	Image:
							 | 
						||
| 
								 | 
							
								# 	{
							 | 
						||
| 
								 | 
							
								# 		'name': NAME,
							 | 
						||
| 
								 | 
							
								# 		'title': TITLE,
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# 		'preview': LINK,
							 | 
						||
| 
								 | 
							
								# 		'original': LINK,
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# 		'tags': [
							 | 
						||
| 
								 | 
							
								# 			TAG, 
							 | 
						||
| 
								 | 
							
								# 			...
							 | 
						||
| 
								 | 
							
								# 		],
							 | 
						||
| 
								 | 
							
								# 		'links': [
							 | 
						||
| 
								 | 
							
								# 			...
							 | 
						||
| 
								 | 
							
								# 		]
							 | 
						||
| 
								 | 
							
								# 	}
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#-----------------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								# basic patterns...
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								##!!!
							 | 
						||
| 
								 | 
							
								IMAGE_ID = ANY
							 | 
						||
| 
								 | 
							
								NAME = ANY
							 | 
						||
| 
								 | 
							
								PATH = ANY
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								LINK_TYPE = OR('preview', 'original', 'image')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								LINK = {
							 | 
						||
| 
								 | 
							
									'name': NAME,
							 | 
						||
| 
								 | 
							
									'path': PATH,
							 | 
						||
| 
								 | 
							
									'type': LINK_TYPE,
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								IMAGE = {
							 | 
						||
| 
								 | 
							
									'id': IMAGE_ID,
							 | 
						||
| 
								 | 
							
									'name': NAME,
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									'preview': LINK,
							 | 
						||
| 
								 | 
							
									'original': LINK,
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									'links': None,
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									'metadata': None,
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#-----------------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								index = {
							 | 
						||
| 
								 | 
							
									'tags': tagset.DictTagSet(),
							 | 
						||
| 
								 | 
							
									'paths': {},
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def import_image(path, index):
							 | 
						||
| 
								 | 
							
									'''
							 | 
						||
| 
								 | 
							
									'''
							 | 
						||
| 
								 | 
							
									# create an ID...
							 | 
						||
| 
								 | 
							
									uid = uuid.uuid1()
							 | 
						||
| 
								 | 
							
									while uid in index['paths']:
							 | 
						||
| 
								 | 
							
										uid = uuid.uuid1()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									# add file to index...
							 | 
						||
| 
								 | 
							
									index['paths'][uid] = path
							 | 
						||
| 
								 | 
							
									index['tags'].tag(uid, 'type:image', 'image')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									return uid
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if __name__ == '__main__':
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									t = index['tags']
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									t0 = time.time()
							 | 
						||
| 
								 | 
							
									print 'generating data...',
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									for i in xrange(500):
							 | 
						||
| 
								 | 
							
										n = 'moo%05d' % i
							 | 
						||
| 
								 | 
							
										uid = import_image(n, index)
							 | 
						||
| 
								 | 
							
										if n[-1] == '0':
							 | 
						||
| 
								 | 
							
											t.tag(uid, '0')
							 | 
						||
| 
								 | 
							
										if n[-1] == '5':
							 | 
						||
| 
								 | 
							
											t.tag(uid, '5')
							 | 
						||
| 
								 | 
							
										if n.endswith('10'):
							 | 
						||
| 
								 | 
							
											t.tag(uid, '10')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									t1 = time.time()
							 | 
						||
| 
								 | 
							
									print 'done (%s).' % (t1 - t0)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									t0 = time.time()
							 | 
						||
| 
								 | 
							
									print 'saving data...',
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									pickle.dump(index, open('dummy.index', 'w'))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									t1 = time.time()
							 | 
						||
| 
								 | 
							
									print 'done (%s).' % (t1 - t0)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									t0 = time.time()
							 | 
						||
| 
								 | 
							
									print 'loading data...',
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									index = pickle.load(open('dummy.index'))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									t1 = time.time()
							 | 
						||
| 
								 | 
							
									print 'done (%s).' % (t1 - t0)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									from profile import run
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									t0 = time.time()
							 | 
						||
| 
								 | 
							
									print 'getting number of elements...',
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								##	n = len(index['tags'].all('0').objects())
							 | 
						||
| 
								 | 
							
								##	n = len(index['tags'].all('10').objects())
							 | 
						||
| 
								 | 
							
								##	n = len(index['tags'].any('0', '10').objects())
							 | 
						||
| 
								 | 
							
								##	n = len(index['tags'].all('0').none('10').objects())
							 | 
						||
| 
								 | 
							
								##	n = len(index['tags'].all('type:image'))
							 | 
						||
| 
								 | 
							
									run('''n = len(index['tags'].all('type:image'))''')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									t1 = time.time()
							 | 
						||
| 
								 | 
							
									print 'done (%s).' % (t1 - t0)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									print 'and the number is:', n
							 | 
						||
| 
								 | 
							
									print 'tagset size is:', len(index['tags'])
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#=======================================================================
							 | 
						||
| 
								 | 
							
								#                                            vim:set ts=4 sw=4 nowrap :
							 |