mirror of
				https://github.com/simon987/sist2.git
				synced 2025-10-30 23:46:52 +00:00 
			
		
		
		
	Un-break raw file thumbnails
This commit is contained in:
		
							parent
							
								
									25ab883063
								
							
						
					
					
						commit
						499eb2b2e4
					
				
							
								
								
									
										34
									
								
								third-party/libscan/libscan/raw/raw.c
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										34
									
								
								third-party/libscan/libscan/raw/raw.c
									
									
									
									
										vendored
									
									
								
							| @ -7,8 +7,22 @@ | |||||||
| 
 | 
 | ||||||
| #define MIN_SIZE 32 | #define MIN_SIZE 32 | ||||||
| 
 | 
 | ||||||
| int store_thumbnail_jpeg(scan_raw_ctx_t *ctx, libraw_processed_image_t *img, document_t *doc) { | int store_thumbnail_jpeg(scan_raw_ctx_t *ctx, libraw_thumbnail_t img, document_t *doc) { | ||||||
|     return store_image_thumbnail((scan_media_ctx_t *) ctx, img->data, img->data_size, doc, "x.jpeg"); | 
 | ||||||
|  |     scan_media_ctx_t media_ctx = { | ||||||
|  |             .read_subtitles = FALSE, | ||||||
|  |             .tn_count = 1, | ||||||
|  |             .max_media_buffer = 0, | ||||||
|  |             .store = ctx->store, | ||||||
|  |             .log = ctx->log, | ||||||
|  |             .logf = ctx->logf, | ||||||
|  |             .tn_size = ctx->tn_size, | ||||||
|  |             .tn_qscale = ctx->tn_qscale, | ||||||
|  |             .tesseract_lang = NULL, | ||||||
|  |             .tesseract_path = NULL | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|  |     return store_image_thumbnail(&media_ctx, img.thumb, img.tlength, doc, "x.jpeg"); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| int store_thumbnail_rgb24(scan_raw_ctx_t *ctx, libraw_processed_image_t *img, document_t *doc) { | int store_thumbnail_rgb24(scan_raw_ctx_t *ctx, libraw_processed_image_t *img, document_t *doc) { | ||||||
| @ -171,6 +185,13 @@ void parse_raw(scan_raw_ctx_t *ctx, vfile_t *f, document_t *doc) { | |||||||
|         return; |         return; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     int tn_ok = 0; | ||||||
|  | 
 | ||||||
|  |     if (libraw_lib->thumbnail.tformat == LIBRAW_THUMBNAIL_JPEG) { | ||||||
|  |         tn_ok = store_thumbnail_jpeg(ctx, libraw_lib->thumbnail, doc); | ||||||
|  |     } else if (libraw_lib->thumbnail.tformat == LIBRAW_THUMBNAIL_BITMAP) { | ||||||
|  |         // TODO: technically this should work but is currently untested
 | ||||||
|  | 
 | ||||||
|         int errc = 0; |         int errc = 0; | ||||||
|         libraw_processed_image_t *thumb = libraw_dcraw_make_mem_thumb(libraw_lib, &errc); |         libraw_processed_image_t *thumb = libraw_dcraw_make_mem_thumb(libraw_lib, &errc); | ||||||
|         if (errc != 0) { |         if (errc != 0) { | ||||||
| @ -180,16 +201,9 @@ void parse_raw(scan_raw_ctx_t *ctx, vfile_t *f, document_t *doc) { | |||||||
|             return; |             return; | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|     int tn_ok = 0; |  | ||||||
|     if (libraw_lib->thumbnail.tformat == LIBRAW_THUMBNAIL_JPEG) { |  | ||||||
|         tn_ok = store_thumbnail_jpeg(ctx, thumb, doc); |  | ||||||
|     } else if (libraw_lib->thumbnail.tformat == LIBRAW_THUMBNAIL_BITMAP) { |  | ||||||
|         // TODO: technically this should work but is currently untested
 |  | ||||||
|         tn_ok = store_thumbnail_rgb24(ctx, thumb, doc); |         tn_ok = store_thumbnail_rgb24(ctx, thumb, doc); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     libraw_dcraw_clear_mem(thumb); |  | ||||||
| 
 |  | ||||||
|     if (tn_ok == TRUE) { |     if (tn_ok == TRUE) { | ||||||
|         free(buf); |         free(buf); | ||||||
|         libraw_close(libraw_lib); |         libraw_close(libraw_lib); | ||||||
| @ -206,7 +220,7 @@ void parse_raw(scan_raw_ctx_t *ctx, vfile_t *f, document_t *doc) { | |||||||
| 
 | 
 | ||||||
|     libraw_dcraw_process(libraw_lib); |     libraw_dcraw_process(libraw_lib); | ||||||
| 
 | 
 | ||||||
|     errc = 0; |     int errc = 0; | ||||||
|     libraw_processed_image_t *img = libraw_dcraw_make_mem_image(libraw_lib, &errc); |     libraw_processed_image_t *img = libraw_dcraw_make_mem_image(libraw_lib, &errc); | ||||||
|     if (errc != 0) { |     if (errc != 0) { | ||||||
|         free(buf); |         free(buf); | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user