图片和Base64 互相转换工具:一个简单但实用的离线工具

1,004 阅读3分钟

背景与需求

在日常工作中,我们经常需要在不同的电脑之间传递数据,但有时受限于网络环境或权限问题,无法使用U盘、云存储、即时通讯工具等方式传输文件。此时,剪贴板成为了最便捷的数据传递通道。

然而,剪贴板通常只能处理文本内容,对于图片等二进制数据并不友好。为了解决这一问题,我制作了一个轻量级的  “图片 ↔ Base64”转换工具,它能够将图片编码为 Base64 字符串,从而实现通过剪贴板跨设备复制粘贴图片数据。


🧰 工具功能简介

该工具具有以下核心功能:

  • 图片转 Base64:上传本地图片,自动转换为 Base64 编码,便于复制到剪贴板。
  • Base64 转图片:粘贴或输入 Base64 编码,预览并下载还原后的图片。
  • 剪贴板操作支持:一键复制/粘贴 Base64 文本,无需手动选择和 Ctrl+C/V。
  • 离线运行:完全基于浏览器,无需依赖网络。

📁 HTML 结构说明

整个页面采用简洁的布局,包含两个 Tab 页面用于切换功能模式:

<div class="container">
  <h1>图片 ↔ Base64转换工具 (离线版本)</h1>

  <!-- Tab 切换 -->
  <div class="tabs">
    <div class="tab active" onclick="switchTab('toBase64')">图片 → Base64</div>
    <div class="tab" onclick="switchTab('toImage')">Base64 → 图片</div>
  </div>

  <!-- 图片转 Base64 -->
  <div id="toBase64" class="tab-content active">
    <textarea id="base64Output" placeholder="Base64 结果会显示在这里" readonly></textarea>
    <label class="file-upload-button">上传图片<input type="file" id="fileInput" accept="image/*" /></label>
    <button onclick="copyBase64()">复制</button>
    <button onclick="clearBase64()">清除</button>
  </div>

  <!-- Base64 转图片 -->
  <div id="toImage" class="tab-content">
    <textarea id="base64Input" placeholder="粘贴 Base64 文本(如 data:image/png;base64,...)"></textarea>
    <button onclick="pasteBase64()">粘贴</button>
    <button onclick="convertToImage()">转换为图片</button>
    <button onclick="downloadImage()">下载图片</button>
    <div id="imagePreview"><p>图片预览区</p></div>
  </div>
</div>

💡 核心代码解析

1. 图片转 Base64

通过 <input type="file"> 获取用户上传的图片,使用 FileReader 将其读取为 Data URL(即 Base64 编码)。

document.getElementById("fileInput").addEventListener("change", function (e) {
  const file = e.target.files[0];
  const reader = new FileReader();
  reader.onload = async (e) => {
    document.getElementById("base64Output").value = e.target.result;
  };
  reader.readAsDataURL(file);
});

2. Base64 转图片

将用户粘贴或输入的 Base64 数据设置为 <img> 的 src 属性,浏览器会自动解析并渲染图片。

function convertToImage() {
  const base64Input = document.getElementById("base64Input").value.trim();
  if (!base64Input) return;

  const img = document.createElement("img");
  img.src = base64Input;
  img.onload = () => {
    const preview = document.getElementById("imagePreview");
    preview.innerHTML = "";
    preview.appendChild(img);
  };
}

3. 剪贴板操作

使用现代 Clipboard API 实现一键复制和粘贴功能,提升用户体验:

// 复制 Base64 到剪贴板
async function copyBase64() {
  const text = document.getElementById("base64Output").value;
  await navigator.clipboard.writeText(text);
  showToast("复制成功!");
}

// 粘贴剪贴板中的 Base64 内容
async function pasteBase64() {
  const text = await navigator.clipboard.readText();
  document.getElementById("base64Input").value = text;
  showToast("粘贴成功!");
}

4. 下载图片

当 Base64 成功转换为图片后,点击按钮即可触发图片下载:

function downloadImage() {
  const base64Input = document.getElementById("base64Input").value.trim();
  const link = document.createElement("a");
  link.href = base64Input;
  link.download = "image.png";
  link.click();
}

✅ 使用场景示例

假设你正在 A 电脑上处理一张图片,需要将其传给没有 USB 接口的 B 电脑,可以按如下步骤操作:

  1. 在 A 电脑上打开此工具,上传图片 → 得到 Base64 编码 → 复制到剪贴板。
  2. 在 B 电脑上打开相同的工具,粘贴 Base64 → 点击“转换为图片” → 查看并下载图像。

这样就完成了无文件、无网络的图片传递!


📦 部署方式

由于这是一个纯前端工具,只需将 index.html 文件保存到任意地方,双击打开即可使用,无需服务器支持。


🔚 总结

这个工具虽然简单,却解决了实际工作中的一个痛点问题:如何在不能传输文件的情况下传递图片数据?

通过将图片编码为 Base64 并利用剪贴板进行传递,我们可以在不依赖任何外部工具的前提下完成图片的跨设备传输。你也可以在此基础上扩展更多功能,比如支持拖拽上传、批量转换、历史记录等,打造属于自己的“剪贴板图像助手”。

如果你觉得这个工具对你有帮助,欢迎收藏或分享给需要的人!🌟

🎨 在线地址

在线地址

源码地址