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
|
||||
|
||||
from voussoirkit import bytestring
|
||||
from voussoirkit import imagetools
|
||||
from voussoirkit import pathclass
|
||||
|
||||
from . import constants
|
||||
|
@ -121,32 +122,12 @@ def comma_space_split(s):
|
|||
s = [x for x in s if x]
|
||||
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):
|
||||
if not os.path.isfile(filepath):
|
||||
raise FileNotFoundError(filepath)
|
||||
image = PIL.Image.open(filepath)
|
||||
(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_height=image_height,
|
||||
frame_width=width,
|
||||
|
@ -178,7 +159,7 @@ def generate_video_thumbnail(filepath, outfile, width, height, **special):
|
|||
if not probe.video:
|
||||
return False
|
||||
|
||||
size = fit_into_bounds(
|
||||
size = imagetools.fit_into_bounds(
|
||||
image_width=probe.video.video_width,
|
||||
image_height=probe.video.video_height,
|
||||
frame_width=width,
|
||||
|
|
|
@ -15,4 +15,4 @@ git+https://github.com/senko/python-video-converter.git
|
|||
zipstream
|
||||
|
||||
# My own variety toolkit.
|
||||
voussoirkit>=0.0.28
|
||||
voussoirkit>=0.0.45
|
||||
|
|
Loading…
Reference in a new issue