将 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 数据字符串转换为原始字节或文件的主要内容,如果未能解决你的问题,请参考以下文章

将html转换成canvas

如何将图片转换成html

安卓怎么将html中的img转成base64

[我正在用一本书在python中学习opencv,但出现此错误:只能将整数标量数组转换为标量索引

html2canvas:将dom转换为画布

如何将带有\的字符串路径转换为\\?