mirror of
				https://github.com/flynx/ImageGrid.git
				synced 2025-10-31 11:20:09 +00:00 
			
		
		
		
	experimenting with simpler .makePreviews(..)...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
		
							parent
							
								
									1849e63b63
								
							
						
					
					
						commit
						65ddabb7d9
					
				| @ -62,8 +62,7 @@ function normalizeOrientation(orientation){ | |||||||
| 				7: ['horizontal'], | 				7: ['horizontal'], | ||||||
| 				8: null, | 				8: null, | ||||||
| 			})[orientation], | 			})[orientation], | ||||||
| 	} | 	} } | ||||||
| } |  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @ -119,6 +118,16 @@ var SharpActions = actions.Actions({ | |||||||
| 			this.previewConstructorWorker && this.previewConstructorWorker.kill() | 			this.previewConstructorWorker && this.previewConstructorWorker.kill() | ||||||
| 			delete this.previewConstructorWorker }], | 			delete this.previewConstructorWorker }], | ||||||
| 
 | 
 | ||||||
|  | 	// XXX need to destinguish if something was written in the promise chain...
 | ||||||
|  | 	// 		...return false???
 | ||||||
|  | 	// 		......should the return value be a bit more informative???
 | ||||||
|  | 	// 		something like:
 | ||||||
|  | 	// 			{
 | ||||||
|  | 	// 				gid: ..
 | ||||||
|  | 	// 				path: ..
 | ||||||
|  | 	// 				status: ..
 | ||||||
|  | 	// 				...
 | ||||||
|  | 	// 			}
 | ||||||
| 	// XXX make backup name pattern configurable...
 | 	// XXX make backup name pattern configurable...
 | ||||||
| 	// XXX add crop support...
 | 	// XXX add crop support...
 | ||||||
| 	// XXX revise logging...
 | 	// XXX revise logging...
 | ||||||
| @ -247,7 +256,7 @@ var SharpActions = actions.Actions({ | |||||||
| 				.map(function(gid){ | 				.map(function(gid){ | ||||||
| 					// skip non-images...
 | 					// skip non-images...
 | ||||||
| 					if(that.images[gid].type != undefined){ | 					if(that.images[gid].type != undefined){ | ||||||
| 						return } | 						return false } | ||||||
| 
 | 
 | ||||||
| 					// paths...
 | 					// paths...
 | ||||||
| 					var source = that.getImagePath(gid) | 					var source = that.getImagePath(gid) | ||||||
| @ -271,7 +280,7 @@ var SharpActions = actions.Actions({ | |||||||
| 											|| (fit == 'outside' | 											|| (fit == 'outside' | ||||||
| 												&& Math.min(m.width, m.height) < size)){ | 												&& Math.min(m.width, m.height) < size)){ | ||||||
| 										logger && logger.emit('skipping', to) | 										logger && logger.emit('skipping', to) | ||||||
| 										return } | 										return false } | ||||||
| 									// continue...
 | 									// continue...
 | ||||||
| 									return img }) | 									return img }) | ||||||
| 							: Promise.resolve(img)) | 							: Promise.resolve(img)) | ||||||
| @ -291,7 +300,7 @@ var SharpActions = actions.Actions({ | |||||||
| 											// skip...
 | 											// skip...
 | ||||||
| 											} else { | 											} else { | ||||||
| 												logger && logger.emit('skipping', to) | 												logger && logger.emit('skipping', to) | ||||||
| 												return } } | 												return false } } | ||||||
| 
 | 
 | ||||||
| 										// write...
 | 										// write...
 | ||||||
| 										return img | 										return img | ||||||
| @ -323,9 +332,87 @@ var SharpActions = actions.Actions({ | |||||||
| 											.toFile(to)  | 											.toFile(to)  | ||||||
| 											.then(function(){ | 											.then(function(){ | ||||||
| 												logger  | 												logger  | ||||||
| 													&& logger.emit('done', to) }) }) }) })) }], | 													&& logger.emit('done', to)  | ||||||
|  | 												return img }) }) }) })) }], | ||||||
|  | 
 | ||||||
|  | 	// XXX do better logging... 
 | ||||||
|  | 	// XXX test against .makePreviews(..) for speed...
 | ||||||
|  | 	// XXX EXPERIMENTAL
 | ||||||
|  | 	makePreviews2: ['- Image/', | ||||||
|  | 		function(images, sizes, base_path, logger){ | ||||||
|  | 			var that = this | ||||||
|  | 			logger = logger || this.logger | ||||||
|  | 			logger = logger && logger.push('Previews') | ||||||
|  | 
 | ||||||
|  | 			// get/normalize images...
 | ||||||
|  | 			//images = images || this.current
 | ||||||
|  | 			images = images  | ||||||
|  | 				|| 'all' | ||||||
|  | 			// keywords...
 | ||||||
|  | 			images = images == 'all' ?  | ||||||
|  | 					this.data.getImages('all') | ||||||
|  | 				: images == 'current' ?  | ||||||
|  | 					this.current | ||||||
|  | 				: images | ||||||
|  | 			images = images instanceof Array ?  | ||||||
|  | 				images  | ||||||
|  | 				: [images] | ||||||
|  | 			// get/normalize sizes....
 | ||||||
|  | 			var cfg_sizes = this.config['preview-sizes'].slice() || [] | ||||||
|  | 			cfg_sizes | ||||||
|  | 				.sort() | ||||||
|  | 				.reverse() | ||||||
|  | 			// XXX revise...
 | ||||||
|  | 			if(sizes){ | ||||||
|  | 				sizes = sizes instanceof Array ? sizes : [sizes] | ||||||
|  | 				// normalize to preview size...
 | ||||||
|  | 				sizes = (this.config['preview-normalized'] ?  | ||||||
|  | 					sizes | ||||||
|  | 						.map(function(s){  | ||||||
|  | 							return cfg_sizes.filter(function(c){ return c >= s }).pop() || s }) | ||||||
|  | 					: sizes) | ||||||
|  | 						.unique() | ||||||
|  | 			} else { | ||||||
|  | 				sizes = cfg_sizes } | ||||||
|  | 
 | ||||||
|  | 			var path_tpl = that.config['preview-path-template'] | ||||||
|  | 				.replace(/\$INDEX|\$\{INDEX\}/g, that.config['index-dir'] || '.ImageGrid') | ||||||
|  | 
 | ||||||
|  | 			return Promise.all(images | ||||||
|  | 				.map(function(gid){ | ||||||
|  | 					var img = that.images[gid] | ||||||
|  | 					var base = base_path  | ||||||
|  | 						|| img.base_path  | ||||||
|  | 						|| that.location.path | ||||||
|  | 					return sizes | ||||||
|  | 						.map(function(size){ | ||||||
|  | 							var name = path = path_tpl | ||||||
|  | 								.replace(/\$RESOLUTION|\$\{RESOLUTION\}/g, parseInt(size)) | ||||||
|  | 								.replace(/\$GID|\$\{GID\}/g, gid)  | ||||||
|  | 								.replace(/\$NAME|\$\{NAME\}/g, img.name) | ||||||
|  | 
 | ||||||
|  | 							return that.makeResizedImage(gid, size, base, {  | ||||||
|  | 									name,  | ||||||
|  | 									skipSmaller: true, | ||||||
|  | 									transform: false, | ||||||
|  | 									logger, | ||||||
|  | 								}) | ||||||
|  | 								.then(function([res]){ | ||||||
|  | 									// XXX this does not appears to work...
 | ||||||
|  | 									if(!res){ | ||||||
|  | 										return false } | ||||||
|  | 
 | ||||||
|  | 									// update metadata...
 | ||||||
|  | 									// XXX make this optional (for testing)...
 | ||||||
|  | 									var preview = img.preview = img.preview || {}  | ||||||
|  | 									preview[parseInt(size) + 'px'] = name | ||||||
|  | 									that.markChanged('images', [gid]) | ||||||
|  | 
 | ||||||
|  | 									return [gid, size, name] }) }) }) | ||||||
|  | 				.flat()) }], | ||||||
| 										 | 										 | ||||||
| 	// XXX use .makeResizedImage(..)
 | 	// XXX use .makeResizedImage(..)
 | ||||||
|  | 	// XXX not sure why are we messing with orientation here...
 | ||||||
| 	// XXX should this account for non-jpeg images???
 | 	// XXX should this account for non-jpeg images???
 | ||||||
| 	// XXX log: count gids and not specific images...
 | 	// XXX log: count gids and not specific images...
 | ||||||
| 	makePreviews: ['Sharp|File/Make image $previews', | 	makePreviews: ['Sharp|File/Make image $previews', | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user