mirror of
				https://github.com/flynx/ImageGrid.git
				synced 2025-10-31 03:10:07 +00:00 
			
		
		
		
	now vips preview generator uses a faster (vips-based) approach to getting preview size + minor bugfix in index.html...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
		
							parent
							
								
									0503a72993
								
							
						
					
					
						commit
						3415f57140
					
				| @ -107,6 +107,13 @@ Roadmap | |||||||
| 				[_] index and group ALL files in an archive | 				[_] index and group ALL files in an archive | ||||||
| 				[_] import metadata | 				[_] import metadata | ||||||
| 				[_] real GIDs | 				[_] real GIDs | ||||||
|  | 		[_] % Thumbnail generation strategies | ||||||
|  | 			[_] extract existing raw thumbnails | ||||||
|  | 			[_] make a preview just bigger than the screen first | ||||||
|  | 			| ...to prevent loading the high-res | ||||||
|  | 			| | ||||||
|  | 			| this should be done BEFORE loading the image -- pre-load phase... | ||||||
|  | 			[_] prioritize making thumbs for the ribbon (~350px)  | ||||||
| 		[_] BUG: shifting last image out of a ribbon misaligns the current ribbon | 		[_] BUG: shifting last image out of a ribbon misaligns the current ribbon | ||||||
| 		| i.e. the prev ribbon was deleted and the new focused ribbon | 		| i.e. the prev ribbon was deleted and the new focused ribbon | ||||||
| 		| is aligned as if it was not current... | 		| is aligned as if it was not current... | ||||||
|  | |||||||
| @ -129,6 +129,14 @@ if(window.CEF_dumpJSON != null){ | |||||||
| 	//
 | 	//
 | ||||||
| 	// NOTE: this will add already existing previews to IMAGES[gid]...
 | 	// NOTE: this will add already existing previews to IMAGES[gid]...
 | ||||||
| 	//
 | 	//
 | ||||||
|  | 	// XXX possible modes:
 | ||||||
|  | 	// 		- fast 
 | ||||||
|  | 	// 			make previews using nearest rscale (factor=1)
 | ||||||
|  | 	// 		- optimized
 | ||||||
|  | 	// 			use closest rscale and minimal factor
 | ||||||
|  | 	// 		- best
 | ||||||
|  | 	// 			only use scale factor (rscale=1)
 | ||||||
|  | 	// XXX get image size without loading the image...
 | ||||||
| 	// XXX make this not just vips-specific...
 | 	// XXX make this not just vips-specific...
 | ||||||
| 	// XXX path handling is a mess...
 | 	// XXX path handling is a mess...
 | ||||||
| 	window.makeImagePreviews = function(gid, sizes){ | 	window.makeImagePreviews = function(gid, sizes){ | ||||||
| @ -153,11 +161,35 @@ if(window.CEF_dumpJSON != null){ | |||||||
| 
 | 
 | ||||||
| 		// get cur image size...
 | 		// get cur image size...
 | ||||||
| 		var size_getter = $.Deferred() | 		var size_getter = $.Deferred() | ||||||
|  | 
 | ||||||
|  | 		var width_getter = $.Deferred() | ||||||
|  | 		var cmd = 'vips im_header_int width "$IN"' | ||||||
|  | 			.replace(/\$IN/g, source.replace(fp, '')) | ||||||
|  | 		proc.exec(cmd, function(error, stdout, stderr){ | ||||||
|  | 			width_getter.resolve(parseInt(stdout)) | ||||||
|  | 		}) | ||||||
|  | 
 | ||||||
|  | 		var height_getter = $.Deferred() | ||||||
|  | 		var cmd = 'vips im_header_int height "$IN"' | ||||||
|  | 			.replace(/\$IN/g, source.replace(fp, '')) | ||||||
|  | 		proc.exec(cmd, function(error, stdout, stderr){ | ||||||
|  | 			height_getter.resolve(parseInt(stdout)) | ||||||
|  | 		}) | ||||||
|  | 
 | ||||||
|  | 		$.when(width_getter, height_getter) | ||||||
|  | 			.done(function(w, h){ | ||||||
|  | 				size_getter.resolve(Math.max(w, h)) | ||||||
|  | 			}) | ||||||
|  | 
 | ||||||
|  | 		/* | ||||||
|  | 		// XXX this may get REALLY SLOW for BIG images...
 | ||||||
|  | 		var size_getter = $.Deferred() | ||||||
| 		var _i = new Image() | 		var _i = new Image() | ||||||
| 		_i.onload = function(){ | 		_i.onload = function(){ | ||||||
| 			size_getter.resolve(Math.max(parseInt(this.width), parseInt(this.height))) | 			size_getter.resolve(Math.max(parseInt(this.width), parseInt(this.height))) | ||||||
| 		}  | 		}  | ||||||
| 		_i.src = source | 		_i.src = source | ||||||
|  | 		*/ | ||||||
| 		 | 		 | ||||||
| 		for(var i=0; i < sizes.length; i++){ | 		for(var i=0; i < sizes.length; i++){ | ||||||
| 			var size = sizes[i] | 			var size = sizes[i] | ||||||
| @ -200,9 +232,12 @@ if(window.CEF_dumpJSON != null){ | |||||||
| 
 | 
 | ||||||
| 						var preview_path = [target_path, name].join('/') | 						var preview_path = [target_path, name].join('/') | ||||||
| 						var factor = source_size / size | 						var factor = source_size / size | ||||||
|  | 						// this can be 1, 2, 4 or 8...
 | ||||||
|  | 						var rscale = 1 | ||||||
| 
 | 
 | ||||||
| 						// XXX make this compatible with other image processors...
 | 						// XXX make this compatible with other image processors...
 | ||||||
| 						var cmd = 'vips im_shrink "$IN" "$OUT:$COMPRESSION" $FACTOR $FACTOR' | 						var cmd = 'vips im_shrink "$IN:$RSCALE" "$OUT:$COMPRESSION" $FACTOR $FACTOR' | ||||||
|  | 							.replace(/\$RSCALE/g, rscale) | ||||||
| 							.replace(/\$IN/g, source.replace(fp, '')) | 							.replace(/\$IN/g, source.replace(fp, '')) | ||||||
| 							.replace(/\$OUT/g, preview_path) | 							.replace(/\$OUT/g, preview_path) | ||||||
| 							.replace(/\$COMPRESSION/g, compression) | 							.replace(/\$COMPRESSION/g, compression) | ||||||
|  | |||||||
| @ -465,6 +465,7 @@ function loadRawDir(path, prefix){ | |||||||
| 
 | 
 | ||||||
| 	var res = $.Deferred() | 	var res = $.Deferred() | ||||||
| 
 | 
 | ||||||
|  | 	// filter images...
 | ||||||
| 	var image_paths = $.map(files, function(e){ | 	var image_paths = $.map(files, function(e){ | ||||||
| 		return IMAGE_PATTERN.test(e) ? e : null | 		return IMAGE_PATTERN.test(e) ? e : null | ||||||
| 	}) | 	}) | ||||||
| @ -481,6 +482,9 @@ function loadRawDir(path, prefix){ | |||||||
| 	res.notify(prefix, 'Loaded', 'Images.') | 	res.notify(prefix, 'Loaded', 'Images.') | ||||||
| 	IMAGES_CREATED = true | 	IMAGES_CREATED = true | ||||||
| 
 | 
 | ||||||
|  | 	// XXX need to make basic previews (screen-size-ish and ribbon-size-ish)...
 | ||||||
|  | 	// XXX
 | ||||||
|  | 
 | ||||||
| 	DATA = dataFromImages(IMAGES) | 	DATA = dataFromImages(IMAGES) | ||||||
| 	res.notify(prefix, 'Loaded', 'Data.') | 	res.notify(prefix, 'Loaded', 'Data.') | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -172,9 +172,9 @@ $(function(){ | |||||||
| 			DATA_ATTR + '_SETTINGS' in localStorage && loadLocalStorageSettings() | 			DATA_ATTR + '_SETTINGS' in localStorage && loadLocalStorageSettings() | ||||||
| 
 | 
 | ||||||
| 			// XXX this will reload everything... | 			// XXX this will reload everything... | ||||||
| 			(MARKED.length == 0  | 			MARKED.length == 0  | ||||||
| 				&& DATA_ATTR + '_MARKED' in localStorage  | 				&& DATA_ATTR + '_MARKED' in localStorage  | ||||||
| 				&& loadLocalStorageMarks()) | 				&& loadLocalStorageMarks() | ||||||
| 
 | 
 | ||||||
| 			updateImages() | 			updateImages() | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user