5@date 2025-06-28T03:55:00+09:00
6@brief gif file generator from pngs
13from datetime
import datetime
18 @brief generate gif from png files
20 @details input files and output directory are defined from command line argument
23 @arg input input files pathname
24 @arg output output directory
26 parser = argparse.ArgumentParser()
27 parser.add_argument(
"input", help=
"input files path and name with wild card", type=str, default=
None)
28 parser.add_argument(
"output", help=
"output directory path", type=str, default=
None)
29 parser.add_argument(
"-duration", help=
"duration time to be genareted gif. default is 200", type=int, default=200)
31 args = parser.parse_args()
32 input_path: str = args.input
33 output_path: str = args.output
34 duration_time: int = args.duration
36 if os.path.isdir(input_path):
37 inputpath = input_path
39 print(
"input directory does not exist")
41 if os.path.isdir(output_path):
42 today_str = datetime.now().strftime(
"%Y%m%d")
43 dir_name = f
"{output_path}/{today_str}"
45 print(
"output directory does not exist")
47 current_time = time.time()
48 unix_time_str = str(int(current_time))
50 os.makedirs(dir_name, exist_ok=
True)
52 basepath = f
"{dir_name}/*.gif"
53 outputpath = basepath.replace(
'*', unix_time_str)
55 files = sorted(glob.glob(inputpath), key=os.path.getctime)
57 images = list(map(
lambda file: Image.open(file), files))
58 images[0].save(outputpath, save_all=
True, append_images=images[1:], duration=duration_time, loop=0)
60 current_directory = os.getcwd()
62 full_path = os.path.join(current_directory, outputpath)