"use client"; import { useState } from "react"; import { ImagePlus, Copy, Trash2, Download, Upload, FileImage } from "lucide-react"; import { Button } from "@/components/ui/button"; import { Textarea } from "@/components/ui/textarea"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { toast } from "sonner"; export default function ImageBase64Page() { const [imageBase64, setImageBase64] = useState(""); const [preview, setPreview] = useState(""); const handleFileChange = (e: React.ChangeEvent) => { const file = e.target.files?.[0]; if (!file) return; if (!file.type.startsWith("image/")) { toast.error("请选择有效的图片文件"); return; } const reader = new FileReader(); reader.onload = (event) => { const result = event.target?.result as string; setImageBase64(result); setPreview(result); toast.success("图片已转为 Base64"); }; reader.readAsDataURL(file); }; const handleBase64Change = (val: string) => { setImageBase64(val); if (val.startsWith("data:image/")) { setPreview(val); } else { setPreview(""); } }; const copyToClipboard = async () => { if (!imageBase64) return; try { await navigator.clipboard.writeText(imageBase64); toast.success("已复制到剪贴板"); } catch { toast.error("复制失败"); } }; const downloadImage = () => { if (!preview) return; const link = document.createElement("a"); link.href = preview; link.download = "downloaded_image"; link.click(); }; return (

图片 Base64 互转

图片文件与 Base64 字符串相互转换

图片转 Base64

点击或拖拽图片文件到此处

支持 JPG, PNG, GIF, WebP 等

Base64 字符串