mirror of
				https://github.com/flynx/ImageGrid.git
				synced 2025-10-31 03:10:07 +00:00 
			
		
		
		
	added cache builder script...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
		
							parent
							
								
									cb0b9d1fc7
								
							
						
					
					
						commit
						7f164c25bd
					
				| @ -34,6 +34,8 @@ Priority work | |||||||
| 					[_] directory lister | 					[_] directory lister | ||||||
| 				[X] basic test | 				[X] basic test | ||||||
| 				[X] disable transitions... | 				[X] disable transitions... | ||||||
|  | 		[_] load sorted images from JSON data | ||||||
|  | 		| curently the sort is as in file... | ||||||
| 		[_] load higher resolution images OVER lower res to avoid "blackouts" | 		[_] load higher resolution images OVER lower res to avoid "blackouts" | ||||||
| 		| plus, might be good to keep the low-res versions loaded... | 		| plus, might be good to keep the low-res versions loaded... | ||||||
| 		| | 		| | ||||||
|  | |||||||
							
								
								
									
										136
									
								
								ui/buildcache.py
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										136
									
								
								ui/buildcache.py
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,136 @@ | |||||||
|  | #======================================================================= | ||||||
|  | 
 | ||||||
|  | __version__ = '''0.0.01''' | ||||||
|  | __sub_version__ = '''20120922031956''' | ||||||
|  | __copyright__ = '''(c) Alex A. Naanou 2012''' | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #----------------------------------------------------------------------- | ||||||
|  | 
 | ||||||
|  | import os | ||||||
|  | import Image | ||||||
|  | import json | ||||||
|  | 
 | ||||||
|  | from pli.logictypes import OR | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #----------------------------------------------------------------------- | ||||||
|  | # TODO: | ||||||
|  | # 	- load config from file... | ||||||
|  | # 	- accept a path on command-line | ||||||
|  | # 	- default path is cwd | ||||||
|  | # | ||||||
|  | #----------------------------------------------------------------------- | ||||||
|  | 
 | ||||||
|  | config = { | ||||||
|  | 	'cache-structure': { | ||||||
|  | 		# XXX make these as close to standard as possible and keep | ||||||
|  | 		# 	  sane distances... | ||||||
|  | 		'150px': '.ImageGridCache/150px/', | ||||||
|  | 		'350px': '.ImageGridCache/350px/', | ||||||
|  | 		'900px': '.ImageGridCache/900px/', | ||||||
|  | 		'1080px': '.ImageGridCache/1080px/', | ||||||
|  | 		'1920px': '.ImageGridCache/1920px/', | ||||||
|  | 	}, | ||||||
|  | 	'sizes': { | ||||||
|  | 		'150px': 150, | ||||||
|  | 		'350px': 350, | ||||||
|  | 		'900px': 900, | ||||||
|  | 		'1080px': 1080, | ||||||
|  | 		'1920px': 1920, | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | images = { | ||||||
|  | 	'position': 0, | ||||||
|  | 	'ribbons':[ | ||||||
|  | 		{} | ||||||
|  | 	] | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | IMAGE_EXT = OR(*( | ||||||
|  | 		'.jpg', '.jpeg', '.JPG', '.JPEG', | ||||||
|  | )) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #----------------------------------------------------------------------- | ||||||
|  | 
 | ||||||
|  | # return list of paths ending in a pattern... | ||||||
|  | def build_cache_dirs(path, config=config): | ||||||
|  | 	''' | ||||||
|  | 	''' | ||||||
|  | 	dirs = config['cache-structure'] | ||||||
|  | 	for _, k in dirs.items(): | ||||||
|  | 		p = os.path.join(path, k) | ||||||
|  | 		if not os.path.exists(p): | ||||||
|  | 			os.makedirs(p) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # XXX this will not overwrite existing files... | ||||||
|  | def make_cache_images(path, config=config): | ||||||
|  | 	''' | ||||||
|  | 	''' | ||||||
|  | 	dirs = config['cache-structure'] | ||||||
|  | 	sizes = config['sizes']  | ||||||
|  | 	n = 0 | ||||||
|  | 
 | ||||||
|  | 	for name in os.listdir(path): | ||||||
|  | 		# skip non-images... | ||||||
|  | 		iid, ext = os.path.splitext(name) | ||||||
|  | 		if ext != IMAGE_EXT: | ||||||
|  | 			continue | ||||||
|  | 		print '.', | ||||||
|  | 		n += 1 | ||||||
|  | 		i = images['ribbons'][0][iid] = { | ||||||
|  | 			'id': iid, | ||||||
|  | 			'preview': {}, | ||||||
|  | 		} | ||||||
|  | 		img = Image.open(os.path.join(path, name)) | ||||||
|  | 		# add original image to struct... | ||||||
|  | 		i['preview'][str(max(*img.size)) + 'px'] = os.path.join(path, name) | ||||||
|  | 		# previews... | ||||||
|  | 		for k, spec in sizes.items(): | ||||||
|  | 			p = os.path.join(path, dirs[k], name) | ||||||
|  | 			# do not upscale images... | ||||||
|  | 			if max(*img.size) <= spec: | ||||||
|  | 				continue | ||||||
|  | 			# add image to index... | ||||||
|  | 			i['preview'][str(spec) + 'px'] = p | ||||||
|  | 			if not os.path.exists(p): | ||||||
|  | 				scale = spec/float(max(*img.size)) | ||||||
|  | 				preview = img.resize((int(img.size[0]*scale), int(img.size[1]*scale)), Image.ANTIALIAS) | ||||||
|  | 				preview.save(p) | ||||||
|  | 				##!!! metadata??? | ||||||
|  | 				##!!! | ||||||
|  | 		i['preview'][str(spec) + 'px'] = p | ||||||
|  | 	images['position'] = images['ribbons'][0].keys()[0] | ||||||
|  | 	with open(os.path.join(path, '.ImageGridCache.json'), 'w') as f: | ||||||
|  | 		json.dump(images, f, indent=4) | ||||||
|  | 	##!!! STUB... | ||||||
|  | 	return n | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #----------------------------------------------------------------------- | ||||||
|  | if __name__ == '__main__': | ||||||
|  | 	PATH = 'images/cache-test/' | ||||||
|  | 
 | ||||||
|  | 	import time | ||||||
|  | 
 | ||||||
|  | 	t0 = time.time() | ||||||
|  | 
 | ||||||
|  | 	build_cache_dirs(PATH) | ||||||
|  | 
 | ||||||
|  | 	n = make_cache_images(PATH) | ||||||
|  | 
 | ||||||
|  | 	t1 = time.time() | ||||||
|  | 
 | ||||||
|  | 	print | ||||||
|  | 	print 'Processed %s images in %s seconds.' % (n, t1-t0) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #======================================================================= | ||||||
|  | #                                            vim:set ts=4 sw=4 nowrap : | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user