将 Html 5 img src 数据字符串转换为原始字节或文件
Posted
技术标签:
【中文标题】将 Html 5 img src 数据字符串转换为原始字节或文件【英文标题】:Convert Html 5 img src data sting into Raw bytes or File 【发布时间】:2013-07-04 04:37:49 【问题描述】:我想将 html 5 图像 src 字节作为二进制文件或硬盘存储到 DB 中。稍后我想阅读并将其分配给 img src="url"
这是 HTML 5 代码
<img src="data:image/gif;base64,R0lGODlhEAAOALMAAOazToeHh0tLS/7LZv/0jvb29t/
f3//Ub//ge8WSLf/rhf/3kdbW1mxsbP//mf///yH5BAAAAAAALAAAAAAQAA4AAARe8L1Ekyky67
QZ1hLnjM5UUde0ECwLJoExKcppV0aCcGCmTIHEIUEqjgaORCMxIC6e0CcguWw6aFjsVMkkIr7g7
7ZKPJjPZqIyd7sJAgVGoEGv2xsBxqNgYPj/gAwXEQA7" >
如何解析并将其作为原始字节或图像存储到数据库/文件中?
注意:将 HTML 5 src 字节转换为 DB/Harddisk 图像的主要原因是,生成将嵌入这些图像的 MS word 2007 格式文档。
【问题讨论】:
是的。我删除了我的评论。 和我一样...我们是否应该反复删除我们的 cmets 关于无限期删除我们的 cmets? :) 【参考方案1】:我该如何解析这个
您可以使用Convert.FromBase64String 将数据解析为字节数组。
至于如何将数据存储在SQL中,对于这么小的图像,您还不如将其存储为base-64编码的形式。对于较大的图像,您需要使用不同的方法,但那里有无数的答案,最好在 SQL 论坛中提问。
【讨论】:
谢谢!我得到了它。我仍然需要删除那些image type
前缀等。我指的是***.com/questions/4850866/…
我决定将它存储在文件系统而不是数据库中:)
是的 - 正确 - 您只需对数据本身执行 FromBase64String 即可,即逗号后面的部分。我忽略了提及这一点,因为它(对我而言)似乎很明显,所以我对此不好。【参考方案2】:
private void button1_Click(object sender, EventArgs e)
// original source string
string src = @"data:image/gif;base64,R0lGODlhEAAOALMAAOazToeHh0tLS/7LZv/0jvb29t/ f3//Ub//ge8WSLf/rhf/3kdbW1mxsbP//mf///yH5BAAAAAAALAAAAAAQAA4AAARe8L1Ekyky67 QZ1hLnjM5UUde0ECwLJoExKcppV0aCcGCmTIHEIUEqjgaORCMxIC6e0CcguWw6aFjsVMkkIr7g7 7ZKPJjPZqIyd7sJAgVGoEGv2xsBxqNgYPj/gAwXEQA7";
// using regex replace to remove `data:image...` prefix
string pattern = @"data:image/(gif|png|jpeg|jpg);base64,";
string imgString = Regex.Replace(src, pattern, string.Empty);
byte[] imageBytes = Convert.FromBase64CharArray(imgString.ToCharArray(), 0, imgString.Length);
using (MemoryStream ms = new MemoryStream(imageBytes))
Image image = Image.FromStream(ms);
pictureBox1.Image = image;
// write to file
using(FileStream file = new FileStream("file.gif", FileMode.Create, FileAccess.Write))
file.Write(imageBytes, 0, imageBytes.Length);
这是您在表单上的图片(仅作为示例):
【讨论】:
以上是关于将 Html 5 img src 数据字符串转换为原始字节或文件的主要内容,如果未能解决你的问题,请参考以下文章