Ctrl + B 复制图片Base64

简介

这是一个专为Windows系统设计的工具,用于快速获取资源管理器(文件夹)中选中图片文件的Base64编码。

背景

由于工作需求经常需要获取图片的Base64并粘贴到postman中调用接口。最开始的做法是使用在线工具将图片转换为Base64编码,这样不仅操作繁琐,而且需要在线转换,可能存在数据泄露的风险。因此,开发了这个工具,可以直接从资源管理器中选中的图片文件中获取Base64编码,大大提高了工作效率并确保数据安全。

功能特点

  • 从资源管理器中选中图片文件:用户可以通过资源管理器选择一个图片文件。
  • 生成Base64编码:选中的图片文件将被转换为Base64编码。
  • 复制到剪贴板:生成的Base64编码会自动复制到系统剪贴板,方便粘贴使用。

使用方法

  1. 打开资源管理器:导航到你的图片文件所在的目录。
  2. 选择图片文件:使用鼠标单击选中一个或多个图片文件。
  3. 运行工具:按下预设的快捷键(例如,Ctrl+B)来运行工具。
  4. 获取Base64编码:工具会自动获取选中图片文件的Base64编码。
  5. 粘贴使用:你现在可以在其他应用程序中粘贴(Ctrl+V)Base64编码。

注意事项

  • 仅支持以下图片格式:.jpg.jpeg.png.gif.bmp
  • 当选中多个图片文件时,仅支持从中选中一个进行Base64编码。

示例

常见问题

Q: 我选中了多个图片文件,为什么不能生成Base64编码? A: 本工具目前仅支持从选中的图片文件中选择一个进行Base64编码。

源码

GitHub地址:https://github.com/x-brook/copy_image_base64_from_explorerv

import win32com.client
import base64
import pyperclip
import keyboard
import pythoncom# 使用上下文管理器初始化和释放COM
class ComContext:def __enter__(self):pythoncom.CoInitialize()def __exit__(self, exc_type, exc_value, traceback):pythoncom.CoUninitialize()# 获取资源管理器中选中的文件路径
def get_selected_files_from_explorer():with ComContext():  # 初始化COMshell = win32com.client.Dispatch("Shell.Application")
windows = shell.Windows()selected_files = []for window in windows:if "explorer" in window.FullName.lower() or "资源管理器" in window.FullName.lower():items = window.Document.SelectedItems()
for item in items:selected_files.append(item.Path)return selected_files# 检查文件是否是图片文件
def is_image_file(file_path):image_extensions = ['.jpg', '.jpeg', '.png', '.gif', '.bmp']
return any(file_path.lower().endswith(ext) for ext in image_extensions)# 将文件转换为Base64编码
def file_to_base64(file_path):with open(file_path, "rb") as f:return base64.b64encode(f.read()).decode()# 主函数
def main():selected_files = get_selected_files_from_explorer()# 获取图片Base64,并复制到剪贴板。不支持多张照片。if len(selected_files) > 1:image_files = [file for file in selected_files if is_image_file(file)]if len(image_files) == 1:base64_data = file_to_base64(image_files[0])pyperclip.copy(base64_data)print(f"Base64 data of the selected image has been copied to clipboard.")else:print("Please select only one image file.")elif len(selected_files) == 1:if is_image_file(selected_files[0]):base64_data = file_to_base64(selected_files[0])pyperclip.copy(base64_data)print(f"Base64 data of the selected image has been copied to clipboard.")else:print("The selected file is not an image.")else:print("No files selected.")print(f"Start")# 使用快捷键触发函数
keyboard.add_hotkey('ctrl+b', main)keyboard.wait('esc')  # 保持程序运行,直到按下'esc'键

作者简介

鑫茂,深圳,Java开发工程师。

希望通过文章,结识更多同道中人。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/1377.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DBUnit增强:填充随机数据和相对时间数据

痛点 测试环境验证时,遇到与当前相对时间相关的测试吗?准备一份SQL?隔一段时间就不能用了。每过一段时间去更新脚本或重置系统时间?看上去也不是很合适的解决方案。依赖数据测试时要重新做,演示时候得全部改&#xff…

Mini-Gemini: 探索多模态视觉语言模型的新境界

一、背景 在数字化时代,人工智能的发展正以前所未有的速度推进。特别是在多模态学习领域,结合视觉和语言的能力已成为研究的热点。最近,一篇名为“Mini-Gemini: Mining the Potential of Multi-modality Vision Language Models”的文章在arX…

05 MySQL--字段约束、事务、视图

1. CONSTRAINT 约束 创建表时,可以给表的字段添加约束,可以保证数据的完整性、有效性。比如大家上网注册用户时常见的:用户名不能为空。对不起,用户名已存在。等提示信息。 约束包括: 非空约束:not null检…

【C++类和对象】const成员函数及流插入提取

💞💞 前言 hello hello~ ,这里是大耳朵土土垚~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹 💥个人主页&#x…

Elasticsearch 开放 inference API 增加了对 OpenAI chat completions 的支持

作者:Tim Grein 我们很高兴地宣布在 Elasticsearch 中推出的最新创新:在 Elastic 的 inference API 中集成了 OpenAI Chat Completions 功能。这一新特性标志着我们在整合尖端人工智能能力至 Elasticsearch 的旅程中又迈出了一步,提供了生成类…

凭证自动拆分

凭证自动拆分 一、设置拆分中间科目 OBX2配置凭证拆分的中间科目 二、销售开票凭证拆分 SE18创建BADI "FI_BILL_ISSUE_SPLIT"的实施 修改实施类:ZCL_FI_BILL_ISSUE_SPLIT中IF_EX_FI_BILL_ISSUE_SPLIT~ACTIVATE_AUTOMATIC_SPLIT方法,代码…

ruoyi-vue前端的一些自定义插件介绍

文章目录 自定义列表$tab对象打开页签关闭页签刷新页签 $modal对象提供成功、警告和错误等反馈信息(无需点击确认)提供成功、警告和错误等提示信息(类似于alert,需要点确认)提供成功、警告和错误等提示信息&#xff08…

vue 的生命周期--图解

生命周期函数中的this指向是vm 或 组件实例对象。 常用的生命周期钩子: mounted: 发送ajax请求、启动定时器、绑定自定义事件、订阅消息等【初始化操作】。beforeDestroy: 清除定时器、解绑自定义事件、取消订阅消息等【收尾工作】。 关于销毁Vue实例 销毁后借助Vu…

常见排序算法(插入排序,希尔排序,选择排序,堆排序,冒泡排序,快速排序,归并排序,计数排序,基数排序,桶排序)

一.排序的概念 1.排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作 2.稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排…

MATLAB设置变量

您可以通过简单的方式分配变量。例如, 示例 x 3 %定义x并用值初始化它 MATLAB将执行上述语句并返回以下结果- x 3 它创建一个名为x的1乘1矩阵,并将值3存储在其元素中。再举一个实例, 示例 x sqrt(16) %定义x并用表达式初始化它 MATLAB将…

自动化测试Selenium(3)

目录 WebDriver相关API 打印信息 打印title 打印url 浏览器的操作 浏览器最大化 设置浏览器的宽,高 操作浏览器的前进, 后退, 刷新 控制浏览器滚动条 键盘事件 键盘单键用法 键盘组合按键用法 鼠标事件 WebDriver相关API 打印信息 打印title 即打印该网址的标题.…

在PostgreSQL中,如何创建一个触发器并在特定事件发生时执行自定义操作?

文章目录 解决方案示例代码1. 创建自定义函数2. 创建触发器 解释 在PostgreSQL中,触发器(trigger)是一种数据库对象,它能在特定的事件(如INSERT、UPDATE或DELETE)发生时自动执行一系列的操作。这些操作可以…

css-Echarts图表初始显示异常非完全显示

1.echarts图表初始加载异常 2.问题原因 初次加载时,由于外层使用%比 echarts dom元素没有完全加载完成,canvas绘画继承本身宽高,造成Echarts图表初始显示异常非完全显示。 3.使用echarts图表可参考以下代码(实现一定的自适应&am…

MyBatis 核心配置讲解(上)

大家好,我是王有志,一个分享硬核 Java 技术的互金摸鱼侠。 前两篇的文章中我们分别介绍了 MyBatis 和 MyBaits 的应用组成,到这里基础篇的内容就结束了。 从今天开始,我们正式进入 MyBatis 学习的第二阶段:MyBatis 的…

【Qt 学习笔记】Qt常用控件 | 显示类控件LCD Number的使用及说明

博客主页:Duck Bro 博客主页系列专栏:Qt 专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ Qt常用控件 | 显示类控件LCD Number的使用及说明 文章编号&#xff1a…

stm32中的中断优先级

在工作中使用到多个定时器中断,由于中断的中断优先级不熟悉导致出错,下面来写一下中断的一些注意事项。 一、中断的分类 1、EXTI外部中断:由外部设备或外部信号引发,例如按键按下、外部传感器信号变化等。外部中断用于响应外部事件,并及时处理相关任务。 2、内部中断:…

Matlab对多个输入信号进行数值排序提取特定值

1、将多个信号转为一个数组信号输出,在这里需要注意,数据类型是否统一; 2、使用Sort模块,进行排序(可设置排序方向),得到排序后的新数组以及对应的索引号; 3、设置想要的索引号&…

12.事件参数

事件参数 事件参数可以获取event对象和通过事件传递数据 获取event对象 <template><button click"addCount">Add</button><p>Count is: {{ count }}</p> </template> <script> export default {data() {return {count:0…

6.SpringBoot 日志文件

文章目录 1.日志概述2.日志作用3.使用和观察日志3.1如何观察日志3.2使用日志3.3日志级别3.4日志持久化3.5日志分割 4.日志框架4.1门面模式(外观模式)4.2 SLF4J框架介绍4.3 日志格式的说明4.3.1日志名称 5.日志颜色设置6.总结 大家好&#xff0c;我是晓星航。今天为大家带来的是…

SpringMvc的核心组件和执行流程

一、 springmvc的核心组件及作用 1.DispatcherServlet:前置控制器&#xff0c;是整个流程控制的核心&#xff0c;用来控制其他组件的执行&#xff0c;降低了其他组件的耦合性 2.Handler:控制器&#xff0c;完成具体的业务逻辑&#xff0c;当DispatcherServlet接收到请求后&am…