剪贴板中图片转为BASE64格式

2023-10-29

需求

将图片复制到剪贴板后,希望将图片快捷地转换为BASE64格式。
各种在线工具往往需要先将图片保存到本地,然后将本地文件上传。现在考虑将图片保存到本地这一步去掉,直接将图片从剪贴板粘贴到网页的某个元素中,网页触发粘贴事件并获取文件,然后转换并显示。

触发粘贴并转换

首先准备一个<textarea>用于粘贴图片以及显示结果。

<textarea id="result"></textarea>

然后为其添加paste事件:

document.getElementById('result').addEventListener('paste', function(e) {
    // 阻止粘贴
    e.stopPropagation();
    e.preventDefault();			 
    // 获取剪贴板信息
    var clipboardData = e.clipboardData || window.clipboardData;
	var items = clipboardData.items;
	for(var i=0; i<items.length; i++) {
		var item = items[i];
		if (item.kind == 'file') {
			var pasteFile = item.getAsFile();
			var reader = new FileReader();
			reader.onload = function(event) {
				// 将结果显示在<textarea>中
				document.getElementById('result').value = event.target.result;
			}
			// 将文件读取为BASE64格式字符串
			reader.readAsDataURL(pasteFile);
			break;
		}
	}				
})

这样,当复制一张图片到剪贴板后,选中<textarea>并按Ctrl+V粘贴,即可将剪贴板中的图片转换为BASE64格式字符串并显示在<textarea>中。

将字符串复制到剪贴板中

现在字符串已经显示在了<textarea>中,于是希望增加一个按钮,点击后会自动选中<textarea>中的所有内容并复制到剪贴板中。
首先准备一个<button>:

<button id="copy-button">结果复制到剪贴板</button>

然后为其添加onclick事件:

document.getElementById('copy-button').onclick = function() {
	var resultTextArea = document.getElementById('result');//获取对象
	resultTextArea.select();//选择
	document.execCommand("Copy");//执行复制
};

点击后即可自动选中<textarea>中的所有内容并复制到剪贴板中。

清空<textarea>

首先准备一个<button>:

<button id="clear-button">清空</button>

然后为其添加onclick事件:

document.getElementById('clear-button').onclick = function() {
	document.getElementById('result').value = '';
};

点击后即可清空<textarea>中的所有内容。

其他

  1. 选择<textarea>组件有多个原因:

    • 可触发focuspaste事件。
    • 可显示大量内容。
    • 可进行选择和复制。
  2. 常规截图以及微信截图都可直接粘贴,但QQ截图不行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

剪贴板中图片转为BASE64格式 的相关文章

  • 在 Three.js 中绕点旋转对象的正确方法是什么?

    关于 Three js 的大多数教程 问题都建议使用 Three js 绕点旋转对象的方法是在要旋转的位置创建父对象 附加对象 然后移动子对象 然后 当父级旋转时 子级围绕该点旋转 例如 Make a pivot var pivot new
  • 在 HTML5 Javascript 中将 BlobBuilder 转换为字符串

    function blobToString blob var reader new FileReader var d reader onloadend function d callback reader result console lo
  • 如何删除除任何特定 id 之外的元素

    假设有一个父 id 其中包含许多元素 我想删除除一个元素之外的所有元素 ex parent id children not id n remove
  • 显示具有多个父代的 D3 树

    我目前有this http bl ocks org mbostock 4339083图已实现 我希望在描述具有多个父节点的子节点时保持结构和可折叠性 有没有办法做到这一点 我研究了力图 但我也想保留一组层次结构 这意味着 1 级的父级可以有
  • Vue 3 Composition API 提供/注入在单文件组件中不起作用

    我正在使用 Composition API 在 VueJS 3 中创建一个库 我实现了提供 注入 如中所述docs https v3 vuejs org guide composition api provide inject html i
  • .push() 将多个对象放入 JavaScript 数组中返回“未定义”

    当我将项目添加到beats数组然后console log用户时 我得到了数组中正确的项目数 但是当我检查 length 时 我总是得到 1 尝试调用索引总是会给我 未定义 如下所示 Tom beats 1 我想我错过了一些明显的东西 但这让
  • 在版本 4.4.6 中禁用 ckeditor 上下文菜单

    我在 Rails4 项目中使用 ckeditor 我尝试了 ckeditor gem 和 ckeditor rails gem 来提供 ckeditor 库 这里有多个帖子 人们希望删除 ckeditor 上下文菜单 以便可以显示本机浏览器
  • 如何使用有角度的材料创建卡片网格?

    我正在尝试使用 ng repeat 创建每行三张卡片的网格 我有一个普通的 javascript 对象数组附加到范围 下面的代码将为每张卡创建一个新行 div div
  • 如何使用 Playwright 使用选择器查找框架 (iframe)

    我有一个小问题 无法找到使用 Microsoft Playwright 框架的答案 根据您可以使用以下代码获取 iframe const frame page frame frame login 但是如何使用选择器来查找 iframe 并与
  • Number.IsNaN() 比 isNaN() 更糟糕吗

    Soooooo isNaNJavaScript 显然被破坏了 比如 isNaN isNaN isNaN true isNaN false isNaN 0 返回 false 当它们看起来都是 不是数字 在 ECMAScript 6 中 草案包
  • 想要动态处理与分页相关的页码显示:ReactJS

    我有一些分页逻辑工作得很好 唯一的问题是我只能让它显示并固定数量的页面可供选择 现在我已经把它放到了 5 页 但我希望它能够根据总记录动态更改 假设我有 100 条记录 每页限制为 10 条 将有 10 页 现在我只能让它以这种方式显示 第
  • 如何使用 Javascript 设置查询字符串

    有没有办法使用 javascript 设置查询字符串的值 我的页面有一个过滤器列表 单击该列表时 它将更改右侧的页内结果窗格 我正在尝试更新 url 的查询字符串值 因此如果用户离开页面 然后单击 后退 按钮 他们将返回到最后一个过滤器选择
  • onclick 事件中未调用函数

    我想在每个 YouTube 链接的末尾添加一些 HTML 以在 litebox 中打开播放器 到目前为止 这是我的代码 document ready function var valid url new RegExp youtube com
  • LeafleteachLayer函数不会迭代所有Layer

    使用 GeoJSON 数据数组创建一些标记 getJSON GetLocationsServlet function data L geoJSON data onEachFeature onEachFeature addTo mymap G
  • 表单发布请求并存储收到的数据

    我有一个非常简单的表单 在提交时发出发布请求
  • 在 iOS 7 Safari 中,如何区分通过边缘滑动与后退/前进按钮的 popstate 事件?

    在 iOS 7 Safari 中 现在有两种后退 前进导航方式 使用底部的传统后退 前进按钮箭头或从屏幕边缘滑动 我正在使用动画在 ajax 应用程序中的页面之间进行转换 但如果用户通过边缘滑动进行导航 我不想触发该转换 因为这本身就是一个
  • 滚动顶部不符合预期

    Note 由于上次忘记奖励而重新开放赏金 A Woff 大师已经给出答案 我想在用户展开某一行时到达该行 这样当最后一个可见行展开时 用户不必向下滚动即可查看内容 I used example tbody on click td green
  • Flot 库将 y 轴设置为最小值 0 和最大值 24

    如何将 y 轴设置在 0 到 24 的范围内 这是我的代码 j plot j placeholder d1 xaxis mode time min new Date 2010 11 01 getTime max new Date 2011
  • 如何通过索引访问 JSON 对象中的字段

    我知道这不是最好的方法 但我别无选择 我必须通过索引访问 JSONObject 中的项目 访问对象的标准方法是只写this objectName or this objectName 我还找到了一种获取 json 对象内所有字段的方法 fo
  • 没有输入的 jQuery 日期选择器

    我有一个相当复杂的网络应用程序 我想向其中添加一些日期选择 UI 我遇到的问题是我无法从文档中弄清楚如何真正控制日期选择器的出现方式和时间 不涉及任何表单元素 不 我不会添加秘密表单字段 因此简单的开箱即用方法根本行不通 我希望有人可以提供

随机推荐

  • 小程序 web-view分享页面检测页面路径跳转

    需求 分享H5页面 打开小程序首页 进入指定的分享H5页面 1 分享函数 onShareAppMessage function Object object 监测分享页面 console log Object object 商城分享页面 re
  • 行为型模式 - 命令模式Command

    模式的定义与特点 命令模式 Command Pattern 是将一个请求封装成一个对象 从而使您可以用不同的请求对客户进行参数化 命令模式是把发出命令的责任和执行命令的责任分割开 委派给不同的对象 命令模式允许请求的一方和发送的一方独立开来
  • 微服务设计和高并发实践

    文章目录 1 微服务的设计原则 1 1 服务拆分方法 1 2 微服务的设计原则 1 3 微服务架构 2 高并发系统的一些优化经验 2 1 提高性能 2 1 1 数据库优化 2 1 2 使用缓存 2 1 3 服务调用优化 2 1 4 动静分离
  • Kotlin数据类型(三:基础数据类型转换)

    一 不可隐式转换 在Java中从小到大 可以隐式转换 数据类型将自动提升 下面以int为例 这么写是ok的 int a 2312 long b a 那么在Kotlin中 隐式转换 编译器会报错 val anInt Int 5 val ccL
  • Leetcode刷题309. 最佳买卖股票时机含冷冻期

    给定一个整数数组 其中第 i 个元素代表了第 i 天的股票价格 设计一个算法计算出最大利润 在满足以下约束条件下 你可以尽可能地完成更多的交易 多次买卖一支股票 你不能同时参与多笔交易 你必须在再次购买前出售掉之前的股票 卖出股票后 你无法
  • 网络安全/黑客技术(就业前景与经验分享)

    网络安全与我们每一个人都息息相关 无论是企业还是个人 现在都非常重视网络安全 而且网络安全是一个新兴的行业 人才需求量远远大于供给 所以在薪资福利上具有很大的优势 并且对于初学者而言 很多人依旧担心前景问题 从市场的情况来看 网络安全的就业
  • 删除对象中的指定元素怎么操作?

    小程序开发中 要实现的功能是 长按某个元素 将其移动到另一个对象中 例如 长按array1的苹果 苹果插入到array2中 菠萝 的前面 而array1中的苹果 删除 var array1 d 1 name 苹果 d 2 name 橘子 d
  • 两条语句告诉你 Python3 当中 [[]] * 10 和 [[] for i in range(10)] 的区别

    gt gt gt aa 10 gt gt gt bb for i in range 10 gt gt gt aa bb True gt gt gt aa 0 is aa 1 True gt gt gt bb 0 is bb 1 False
  • 面试官:说说对React中类组件和函数组件的理解?有什么区别?

    一 类组件 类组件 顾名思义 也就是通过使用ES6类的编写形式去编写组件 该类必须继承React Component 如果想要访问父组件传递过来的参数 可通过this props的方式去访问 在组件中必须实现render方法 在return
  • 华为OD机试 - 拔河比赛(Java)

    题目描述 公司最近准备进行拔河比赛 需要在全部员工中进行挑选 选拔的规则如下 按照身高优先 体重次优先的方式准备比赛阵容 规定参赛的队伍派出10名选手 请实现一个选拔队员的小程序 输入为一个数组 记录了部门人员的身高 体重信息 如 身高 体
  • linux gz文件合并,快速合并多个fastq.gz文件

    案例描述 需要将Sample test1 R1 fastq gz和Sample test2 R2 fastq gz合并为test fastq gz 操作方法1 先zcat再gzip zcat Sample test 1 R1 fastq g
  • oracle客户端与服务端的连接

    author skate time 2010 08 16 oracle客户端与服务端的连接 参考如下 http blog csdn net wyzxg archive 2010 08 16 5815335 aspx oracle服务进程如何
  • ElasticSearch7.14配置SSL,使用https访问

    ElasticSearch7 14配置SSL 使用https访问 1 生成证书 备注 一定要在es用户中生成证书 1 生成elastic stack ca p12文件 bin elasticsearch certutil ca 2 生成el
  • Validator 用法详解

    validation 用法详解 1 常用注解说明 这是javax validation包中的 主要包括上述的几个注解 注解 描述 AssertFalse 被注释的元素必须为 false AssertTrue 同 AssertFalse De
  • jdbc连接mysql 5.7.17_java jdbc连接mysql报错:No suitable driver found for jdbc

    代码如下 importjava sql publicclassJdbcTest publicstaticvoidmain Stringargs Stringurl jdbc mysql localhost zhoujian Connecti
  • Jeesite4关于权限控制之根据部门公司进行过滤

    在开发中 根据不同的部门或者公司展示相应的数据这种情况是很常见的 但是在jeesite4 中该怎样进行过滤呢 其实在这个方面作者也有考虑 都直接封装好了官方文档请参考 数据权限调用 文档中也明确指出 这个是通过在后台管理系统中 通过打对勾的
  • 基于matlab的大米,大米颗数计算MATLAB软件

    应用背景 大米是人类的主食之一 是稻谷经清理 砻谷 碾米 成品整理等工序后制成的成品 人们购买米大多采用直接称量的方法 市面上也有许多仪器采用光电传感器等方式用于生产加工时米粒的计数 然而这样的方法都比较依赖于设备 不方便人们日常的使用 运
  • 前端mqtt使用总结

    本文转载自https www codenong com cs105863097 主要解决了 mqtt 连接 重连 数据实时传递等问题 简介 MQTT Message Queuing Telemetry Transport 消息队列遥测传输协
  • 电脑网线,网线排序

    网络的使用是越来越普遍 相信不少用户家里的电脑都是使用网线来链接的 当电脑网线不小心被折断了如何来网线排序呢 接下来就来接大家如何来给电脑网线排序 网线排序 双绞线的四对八根导线是有序排列的 对于100M及以上的网络传输速率 每一根线都有定
  • 剪贴板中图片转为BASE64格式

    需求 将图片复制到剪贴板后 希望将图片快捷地转换为BASE64格式 各种在线工具往往需要先将图片保存到本地 然后将本地文件上传 现在考虑将图片保存到本地这一步去掉 直接将图片从剪贴板粘贴到网页的某个元素中 网页触发粘贴事件并获取文件 然后转