蘭雅sRGB 个人笔记 https://262235.xyz
提供编程和电脑应用视频教程,工具和源代码
C, C++, Python Programming, Source Code, Video

旧Hexo博客 | Github | IP定位WebAPI | Docker Hub
编程中文文档 | 网盘分享 | 中文Linux命令

图片文件右键批量转Webp格式,或者视频转换格式

wp.png_new.webp

注册表编辑器添加右键菜单的基本原理

ffmpeg.png

  • 注册表添加以下键值,就能右键运行命令
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\图片转Webp]
@="图片转Webp(&W)"
"icon"="C:\\soft\\amd.ico"

[HKEY_CLASSES_ROOT\*\shell\图片转Webp\command]
@="cmd /c ffmpeg -i %1 %1_new.webp"

使用 FFMPEG 转换图片

ffmpeg -i a.png new.webp
# 因为是命令行程序,所以调用系统Shell `cmd -c`运行
cmd /c ffmpeg -i %1 %1_new.webp

因为工具调用 ffmpeg 还可以视频转webp,只要小小改动:视频格式转换,视频提取mp3

GIF.gif_new.webp

使用 Python 可以操作 Windows 注册表添加,还可以添加快捷键

  • 添加右键菜单的代码,,封装成了 add_context_menu 函数:
  • 源码: add_context_menu.py
# coding:utf-8
import winreg as reg
def add_context_menu(menu_name,command,reg_root_key_path,reg_key_path,shortcut_key):
    '''
    封装的添加一个右键菜单的方法
    :param menu_name: 显示的菜单名称
    :param command: 菜单执行的命令
    :param reg_root_key_path: 注册表根键路径
    :param reg_key_path: 要添加到的注册表父键的路径(相对路径)
    :param shortcut_key: 菜单快捷键,如:'S'
    :return:
    '''
    # 打开名称父键
    key = reg.OpenKey(reg_root_key_path, reg_key_path)
    # 为key创建一个名称为menu_name的sub_key,并设置sub_key的值为menu_name加上快捷键,数据类型为REG_SZ字符串类型
    reg.SetValue(key, menu_name, reg.REG_SZ, menu_name + '(&{0})'.format(shortcut_key))

    # 打开刚刚创建的名为menu_name的sub_key
    sub_key = reg.OpenKey(key, menu_name)
    # 为sub_key添加名为'command'的子键,并设置其值为command + ' "%v"',数据类型为REG_SZ字符串类型
    # reg.SetValue(sub_key, 'command', reg.REG_SZ, command + ' "%v"')
    reg.SetValue(sub_key, 'command', reg.REG_SZ, command)

    # 关闭sub_key和key
    reg.CloseKey(sub_key)
    reg.CloseKey(key)

def img2webp_menu():
    '''
    添加右键菜单,可以在右键点击一个文件、目录、文件夹空白处或驱动器盘符后在命令行中打印出当前的绝对路径
    :return: None
    '''
    # 菜单名称
    menu_name = '图片转Webp'
    # 执行一个python脚本的命令,用于打印命令行参数的第二个参数(即选中的文件路径)
    py_command = r'cmd /c ffmpeg -i %1 %1_new.webp'

    # 添加文件右键菜单
    add_context_menu(menu_name, py_command,reg.HKEY_CLASSES_ROOT,r'*\\shell','W')

    # # 添加文件夹右键菜单
    # add_context_menu(menu_name, py_command, reg.HKEY_CLASSES_ROOT, r'Directory\\shell', 'S')
    # # 添加文件夹空白处右键菜单
    # add_context_menu(menu_name, py_command, reg.HKEY_CLASSES_ROOT, r'Directory\\Background\\shell', 'S')
    # # 添加磁盘驱动器右键菜单
    # add_context_menu(menu_name, py_command, reg.HKEY_CLASSES_ROOT, r'Drive\\shell', 'S')

if __name__ == '__main__':
    img2webp_menu()

代码中添加注册表键的command命令时,是以%v代表一个路径参数的,还有其他几种参数可以使用:

系统默认变量的含义:
%1  表示程序操作的文件
%2  表示系统默认的打印机
%3  表示资料扇区
%4  表示操作的Port端口
"%v"  程序操作的路径
本原创文章自由转载,转载请注明本博来源及网址 | 当前页面:蘭雅sRGB 个人笔记 » 图片文件右键批量转Webp格式,或者视频转换格式