base64编码图片在线提取与保存
概述
随着互联网的发展,图片的分享和使用变得越来越频繁。然而,在很多情况下,我们可能会遇到带有水印的图片,这限制了图片的二次利用。为了解决这个问题,本文将介绍一个简单的网页应用,它能够帮助用户从文本中提取Base64编码的图片,并提供下载功能,从而实现无水印图片的保存。
网页结构
该网页应用的基础HTML5文档类型声明为<!DOCTYPE html>
,确保页面在所有现代浏览器中以标准模式渲染。整个页面的默认语言设置为中国大陆简体中文(lang="zh-CN"
),以便更好地支持中文用户。
头部信息
字符集:通过
<meta charset="UTF-8">
定义了页面使用的字符编码为UTF-8,保证页面能正确显示各种语言的字符。标题:
<title>
标签内设置了页面标题为“图片提取与保存”,这个标题会显示在浏览器的标签页上。
样式设计
为了提升用户体验,页面采用了简洁美观的CSS样式:
全局样式:设置了页面字体、背景颜色、边距和内边距,使得页面看起来更加整洁。
容器:
.container
类用于创建一个居中的内容区域,有白色背景、圆角和阴影效果,给用户带来视觉上的舒适感。输入框:
#inputBox
是一个多行文本输入框,用户可以在此粘贴包含Base64编码的图片数据。按钮:提供了两个按钮——“提取”和“保存图片”。点击“提取”按钮后,页面会尝试解析用户粘贴的文本并显示预览图片;点击“保存图片”按钮,则可以将预览的图片下载到本地。
预览图片:
#previewImage
用于展示从文本中提取出来的图片,同时设置了最大宽度以确保图片不会过大影响页面布局。
功能实现
该网页应用的核心功能是通过JavaScript来实现的:
提取图片:
extractImage()
函数首先获取用户在textarea
中输入的内容,然后使用正则表达式匹配出符合Base64编码格式的字符串。如果找到了匹配项,就将其作为图片源设置给<img>
元素;如果没有找到或格式不正确,则会弹出警告提示。保存图片:
saveImage()
函数检查是否已有图片被加载到<img>
元素中。如果有,它会创建一个临时的<a>
元素,将图片的src
属性值设置为链接地址,并添加download
属性指定下载文件名。之后模拟点击这个链接触发下载操作,最后移除这个临时元素。
使用方法
用户打开网页后,可以在提供的文本框中粘贴包含Base64编码的图片数据。
点击“提取”按钮,系统会自动分析输入内容并尝试加载图片进行预览。
如果图片成功加载,用户可以点击“保存图片”按钮将图片下载到本地,且下载的图片不含任何水印。
代码如下
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>图片提取与保存</title> <style> body { font-family: Arial, sans-serif; background-color: #f4f4f9; margin: 0; padding: 20px; } h1 { text-align: center; color: #333; } .container { max-width: 800px; margin: 0 auto; background-color: #fff; padding: 20px; border-radius: 8px; box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); } #inputBox { width: 100%; height: 150px; padding: 10px; border: 1px solid #ccc; border-radius: 4px; resize: vertical; } .button-container { display: flex; justify-content: space-between; margin-top: 10px; } button { padding: 10px 20px; background-color: #007bff; color: #fff; border: none; border-radius: 4px; cursor: pointer; } button:hover { background-color: #0056b3; } #previewImage { max-width: 300px; /* 调整预览图片的最大宽度 */ margin-top: 20px; border: 1px solid #ccc; border-radius: 4px; } </style> </head> <body> <div> <h1>无水印下载~</h1> <textarea id="inputBox" placeholder="粘贴图片数据"></textarea><br> <div> <button onclick="extractImage()">提取</button> <button onclick="saveImage()">保存图片</button> </div> <img id="previewImage" src="" alt="预览图片"> </div> <script> function extractImage() { const input = document.getElementById('inputBox').value; const base64Data = input.match(/data:image\/[^;]+;base64,([^"]+)/); if (base64Data) { document.getElementById('previewImage').src = base64Data[0]; } else { alert('无效的Base64编码'); } } function saveImage() { const image = document.getElementById('previewImage'); if (image.src) { const link = document.createElement('a'); link.href = image.src; link.download = 'image.png'; document.body.appendChild(link); link.click(); document.body.removeChild(link); } else { alert('没有图片可供保存'); } } </script> </body> </html>