You can now specify the scaler algorithm
This commit is contained in:
parent
01c31ae17d
commit
2b6437c1db
|
@ -19,11 +19,23 @@ def get_args() -> Dict[str, Any]:
|
|||
help='Width of the GIF in pixels, respecting aspect ratio')
|
||||
parser.add_argument('-r', '--framerate', type=str,
|
||||
default='12', help='Framerate of GIF')
|
||||
parser.add_argument('-s', '--scaler', type=str, choices=get_scaling_algorithms(),
|
||||
default='lanczos', help='Scaling algorithm to use')
|
||||
parser.add_argument('-t', '--tag', type=str, default=get_tag(),
|
||||
help='Optional tag included in file name')
|
||||
return vars(parser.parse_args())
|
||||
|
||||
|
||||
def get_scaling_algorithms() -> List[str]:
|
||||
return ['fast_bilinear', 'bilinear', 'bicubic', 'experimental', 'neighbor',
|
||||
'area', 'bicublin', 'gauss', 'sinc', 'lanczos', 'spline']
|
||||
|
||||
|
||||
# TODO: Figure out how to specify both scaling and dithering algorithms.
|
||||
def get_dithering_algorithms() -> List[str]:
|
||||
return ['none', 'auto', 'bayer', 'ed', 'a_dither', 'x_dither']
|
||||
|
||||
|
||||
def get_tag() -> str:
|
||||
return ''.join(random.choices(string.ascii_uppercase + string.digits, k=5))
|
||||
|
||||
|
@ -41,13 +53,15 @@ def generate_gif_files(inputs: List[str], args: Dict[str, Any]) -> Dict[str, str
|
|||
tag = args['tag']
|
||||
width = args['width']
|
||||
framerate = args['framerate']
|
||||
scaler = args['scaler']
|
||||
|
||||
output_map = {}
|
||||
for input in inputs:
|
||||
file_name = f"{Path(input).stem}_{tag}.gif"
|
||||
full_path = f"{Path(input).parent}/{file_name}"
|
||||
call_ffmpeg(f"-i {input} -f gif -r {framerate} -filter_complex scale={ \
|
||||
width}:-1:flags=lanczos,split[v1][v2];[v1]palettegen[plt];[v2][plt]paletteuse {full_path}")
|
||||
width}:-1:flags={scaler},split[v1][v2];[v1]palettegen[plt];[v2][plt]paletteuse { \
|
||||
full_path}")
|
||||
output_map[input] = full_path
|
||||
|
||||
return output_map
|
||||
|
|
Loading…
Reference in New Issue