将Html 5 img src数据转换为原始字节或文件

时间:2013-07-06 04:30:25

标签: c# asp.net sql-server asp.net-mvc html5

我想将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" width="16" height="14" alt="embedded folder icon">

如何解析此问题并将其作为原始字节或图像存储到DB / File中?

注意:将HTML 5 src字节转换为DB / Harddisk映像的主要原因是,生成将嵌入这些图像的MS word 2007格式文档。

2 个答案:

答案 0 :(得分:3)

如何解析此

您可以使用Convert.FromBase64String将数据解析为字节数组。

至于如何在SQL中存储数据,对于如此小的图像,您也可以将其存储在base-64编码形式中。对于较大的图像,您将需要使用不同的方法,但是那里有无数的答案,并且在SQL论坛中可能会更好。

答案 1 :(得分:3)

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);
     }
 }

这是你在表格上的形象(仅举例):
enter image description here