Use voussoirkit.imagetools for fit_into_bounds function.
This commit is contained in:
		
							parent
							
								
									25ed427272
								
							
						
					
					
						commit
						b88d577ddd
					
				
					 2 changed files with 4 additions and 23 deletions
				
			
		|  | @ -12,6 +12,7 @@ import unicodedata | ||||||
| import zipstream | import zipstream | ||||||
| 
 | 
 | ||||||
| from voussoirkit import bytestring | from voussoirkit import bytestring | ||||||
|  | from voussoirkit import imagetools | ||||||
| from voussoirkit import pathclass | from voussoirkit import pathclass | ||||||
| 
 | 
 | ||||||
| from . import constants | from . import constants | ||||||
|  | @ -121,32 +122,12 @@ def comma_space_split(s): | ||||||
|     s = [x for x in s if x] |     s = [x for x in s if x] | ||||||
|     return s |     return s | ||||||
| 
 | 
 | ||||||
| def fit_into_bounds(image_width, image_height, frame_width, frame_height, only_shrink=False): |  | ||||||
|     ''' |  | ||||||
|     Given the w+h of the image and the w+h of the frame, |  | ||||||
|     return new w+h that fits the image into the frame |  | ||||||
|     while maintaining the aspect ratio. |  | ||||||
| 
 |  | ||||||
|     (1920, 1080, 400, 400) -> (400, 225) |  | ||||||
|     ''' |  | ||||||
|     width_ratio = frame_width / image_width |  | ||||||
|     height_ratio = frame_height / image_height |  | ||||||
|     ratio = min(width_ratio, height_ratio) |  | ||||||
| 
 |  | ||||||
|     new_width = int(image_width * ratio) |  | ||||||
|     new_height = int(image_height * ratio) |  | ||||||
| 
 |  | ||||||
|     if only_shrink and (new_width > image_width or new_height > image_height): |  | ||||||
|         return (image_width, image_height) |  | ||||||
| 
 |  | ||||||
|     return (new_width, new_height) |  | ||||||
| 
 |  | ||||||
| def generate_image_thumbnail(filepath, width, height): | def generate_image_thumbnail(filepath, width, height): | ||||||
|     if not os.path.isfile(filepath): |     if not os.path.isfile(filepath): | ||||||
|         raise FileNotFoundError(filepath) |         raise FileNotFoundError(filepath) | ||||||
|     image = PIL.Image.open(filepath) |     image = PIL.Image.open(filepath) | ||||||
|     (image_width, image_height) = image.size |     (image_width, image_height) = image.size | ||||||
|     (new_width, new_height) = fit_into_bounds( |     (new_width, new_height) = imagetools.fit_into_bounds( | ||||||
|         image_width=image_width, |         image_width=image_width, | ||||||
|         image_height=image_height, |         image_height=image_height, | ||||||
|         frame_width=width, |         frame_width=width, | ||||||
|  | @ -178,7 +159,7 @@ def generate_video_thumbnail(filepath, outfile, width, height, **special): | ||||||
|     if not probe.video: |     if not probe.video: | ||||||
|         return False |         return False | ||||||
| 
 | 
 | ||||||
|     size = fit_into_bounds( |     size = imagetools.fit_into_bounds( | ||||||
|         image_width=probe.video.video_width, |         image_width=probe.video.video_width, | ||||||
|         image_height=probe.video.video_height, |         image_height=probe.video.video_height, | ||||||
|         frame_width=width, |         frame_width=width, | ||||||
|  |  | ||||||
|  | @ -15,4 +15,4 @@ git+https://github.com/senko/python-video-converter.git | ||||||
| zipstream | zipstream | ||||||
| 
 | 
 | ||||||
| # My own variety toolkit. | # My own variety toolkit. | ||||||
| voussoirkit>=0.0.28 | voussoirkit>=0.0.45 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue