蘭雅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格式,或者视频转换格式