Skip to content

Instantly share code, notes, and snippets.

@Ichunjo
Last active August 22, 2020 12:20
Show Gist options
  • Save Ichunjo/3987272cb8942c820f48d5bff9829b95 to your computer and use it in GitHub Desktop.
Save Ichunjo/3987272cb8942c820f48d5bff9829b95 to your computer and use it in GitHub Desktop.
Image conversion script anything -> webp using cwebp
"""Script conversion image"""
import os
import tkinter
import subprocess
import shlex
import multiprocessing
from multiprocessing.pool import ThreadPool as Pool
from tkinter.filedialog import askdirectory
from vsutil import is_image
def conversion(args):
file, output_folder = args
# webp_cmd = f'cwebp -q 100 -m 6 -f 0 -lossless -quiet \"{file}\" -o \"{output_folder}/{os.path.splitext(file)[0]}.webp\"'
webp_cmd = f'cwebp -q 100 -m 6 -f 0 -lossless -quiet -mt \"{file}\" -o \"{output_folder}/{os.path.splitext(file)[0]}.webp\"'
subprocess.run(shlex.split(webp_cmd), check=True, encoding='utf-8')
def main():
tkinter.Tk().withdraw()
image_folder = askdirectory()
files = os.listdir(image_folder)
os.chdir(image_folder)
output_folder = 'conv files'
if not os.path.exists(output_folder):
os.mkdir(output_folder)
num_threads = multiprocessing.cpu_count()
pool = Pool(num_threads)
for file in files:
if is_image(file):
pool.apply_async(conversion, ((file, output_folder),))
pool.close()
pool.join()
if __name__ == "__main__":
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment