Преобразование всех изображений в папке в .webp с помощью скрипта Python - PullRequest
2 голосов
/ 02 апреля 2019

Я работал над изображениями для веб-сайта и обнаружил, что формат .webp гораздо более компактен, чем .jpeg или .png. Узнайте больше о Документах .

Теперь у меня есть папка с почти 25 изображениями, и я хочу преобразовать все в формат .webp.Может кто-нибудь предложить мне, как конвертировать все, используя только сценарий Python без использования онлайн-инструментов.

1 Ответ

2 голосов
/ 02 апреля 2019

Ну, во-первых, вам нужно скачать программу сжатия cwebp в соответствии с вашей машиной (Windows | Linux) с здесь .

Теперь, после распаковки папки в C:\Program Files\ у вас естьна установите путь на cwebp.exe, ниже мой путь Path:: C:\Program Files\libwebp\bin

Откройте cmd, чтобы проверить, правильно ли вы сделали до сих пор.

  • cmd> cwebp -version

cwebp- version

  • cmd> python --version

python --version

Теперь это очень просто, просто запустите приведенный ниже скрипт, и вы получите желаемый результат, или вы можете скачать мое репо на github с здесь

# --cwebp_compressor.py--

# cmd> python cwebp_compressor.py folder-name 80

import sys
from subprocess import call
from glob import glob

#folder-name
path = sys.argv[1]
#quality of produced .webp images [0-100]
quality = sys.argv[2]

if int(quality) < 0 or int(quality) > 100:
    print("image quality out of range[0-100] ;/:/")
    sys.exit(0)

img_list = []
for img_name in glob(path+'/*'):
    # one can use more image types(bmp,tiff,gif)
    if img_name.endswith(".jpg") or img_name.endswith(".png") or img_name.endswith(".jpeg"):
        # extract images name(image_name.[jpg|png]) from the full path
        img_list.append(img_name.split('\\')[-1])


# print(img_list)   # for debug
for img_name in img_list:
    # though the chances are very less but be very careful when modifying the below code
    cmd='cwebp \"'+path+'/'+img_name+'\" -q '+quality+' -o \"'+path+'/'+(img_name.split('.')[0])+'.webp\"'
    # running the above command
    call(cmd, shell=False)  
    # print(cmd)    # for debug
...