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…

2024java常见面试题笔记

文章目录 1、jdk1.8的新特性2.concurrentHashMap和HashMap区别3.线程池创建的方式4.线程池的拒绝策略有哪些5.乐观锁和悲观锁6.synchronized锁的升级7.synchronized 和 Lock 有什么区别?8.synchronized 和 ReentrantLock 区别是什么?9.CycliBarriar和Cou…

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…

Java一键发送邮件:封装好的工具类详解

一、引言 在Java应用中,邮件发送功能经常用于通知、验证等场景。然而,每次发送邮件都需要编写大量的代码来配置SMTP服务器、认证信息、邮件内容等,这不仅效率低下,而且容易出错。为了解决这个问题,我们可以封装一个邮…

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.稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排…

Basic TCP Server Client

Server #include <stdio.h> #include <string.h> #include <unistd.h> // read and write (TCP); sendto and recvfrom (UDP) #include <arpa/inet.h> // 包含#include <sys/socket.h>int main(int argc, char* argv[]) {// 1. 创建监听fdint f…

【C++】List容器(2)-内存管理-创建-插入-删除-遍历-排序-查找-底层分析-构造和析构函数-内存泄漏等

std::list 是 C STL 中的一种双向链表容器&#xff0c;它提供了一系列的迭代器来访问元素&#xff0c;包括前方迭代器、后方迭代器和const迭代器。std::list 采用双向链表实现&#xff0c;每个节点都存储了数据以及两个指向前一个节点和后一个节点的指针。 内存管理 在 C 中&…

MATLAB设置变量

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

自动化测试Selenium(3)

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

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

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

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

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

* 玩转数据魔方Plotly Express实战8例

大家好&#xff01;今天我们要一起探索Plotly Express这个超级棒的数据可视化神器。想象一下&#xff0c;你的数据故事能以炫酷图表的形式跃然纸上&#xff0c;是不是很兴奋&#xff1f;Plotly Express就像魔法棒&#xff0c;让复杂数据瞬间变得生动起来。接下来&#xff0c;让…

mac qt android开发环境

1,安装Android Studio 下载 Android Studio 和应用工具 - Android 开发者 | Android Developers (google.cn)

MyBatis 核心配置讲解(上)

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