从二进制加载图像

时间:2013-11-09 08:24:00

标签: c# html

这是我从Binary [](SqlServerCe)加载图像的循环。每个图像都存储在一个包含字节数组的列表中:

List<byte[]> imgBinary = new List<byte[]>();

imgMIME变量包含以下值:

image/png
image/bmp

等等。

我目前的代码如下:

@for (int i = 0; i < infos.Count(); i++)
{
    <li>    
        @lat[i], 
        @lon[i], 
        @infos[i],
        <img src="data:'+'@imgMIME[i]'+';base64{'+'@imgBinary[i]'+'}"/>
    </li>
}

在我的页面上,我为每个加载的图像都会收到错误图像。 愿有人请帮我解决这个问题吗?

感谢您的时间。

1 个答案:

答案 0 :(得分:1)

您的内联图片格式不正确 - 应该是:

data:MIMETYPE;base64,CONTENT_AS_BASE64_STRING

字符串中不应有花括号( {} )。您可以在this article中详细了解内嵌图片。

看起来您正在将字节写入内嵌图像。当内容以Base64 formatted string给出时,内嵌图像有效。这就是为什么你需要使用Convert.ToBase64String将图像内容转换为Base64字符串(当前内容是字节数组)。

我还建议你使用String.Format

<img src=@string.Format("data:{0};base64,{1}", imgMIME[i], Convert.ToBase64String(imgBinary[i]))/> 

IMO它批准了可读性,因此更容易看到正确的字符串。工作内嵌图像的一个示例:

<img src="data:image\png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABZ0RVh0Q3JlYXRpb24gVGltZQAwOC8xOC8wOaw6EPwAAAAcdEVYdFNvZnR3YXJlAEFkb2JlIEZpcmV3b3JrcyBDUzQGstOgAAACEElEQVRYhcWXQY7TMBSGPyM2SEgUiT25wWRO0CCxeV5xA+YGzA2mF0DM7NjRI7B6b5uROECHFTvCBaCVEEvCIjYKaZraBdpfip7y/GJ/ebZfHNe2LafU/Zxg7/0P4AGwAVbBXQe7AtZAo6pNap8uNQPe+xnwDfgOPEx4ZBfkE+CTqn6AvAyUwb5W1UWAKoFZuMpeXPTNg2/OtlwuQBVsfCtUddVrf7/rQe99fLYA3gI/f1PEKRCRyblwzgGQOmVm5kZACuAzcKuqFcC9pN7+nYpg6+jYmoIx8hztyWQVbBMdx85AXKgnAygAVLU+FcAZ8KXvyAYQkdkhI4eaAb30ZwOIyIKJ/b5HEaA+CEBELoArYC4iywMAimD7xSsNIAz+rud6eQBEFWyTBSAil4PB+xB1xpooYat8TwOIyDXwZiJkzmBOxxS+pI+Au2HbTgARKYFX+zoHzkKWpjS6AyYBgBcJg6fGRoDVsGEKYD3iu6MrJJuE2L8GWPLnnN3Q1YA13RtHiA2w2ANQZAOY2drMSuAceGxml8AFXTltzGwGnJvZzMy2Oh5oDjB2Vtx7Ioqdh4X2lO6Nl0CVMHC/BN+OtScfyczsGrhOje+pCLYZazzG13DnFoTM/4JUOefw3i/oFt3z4K6PBhB0Nbj/ejSAtm1xzj0LtxWAqn4ci00+lucq9XB77CPZlpL/Df+XTp6BXyWzqYOyhB+rAAAAAElFTkSuQmCC" />

看起来像这样:

inline image output

查看图片元素中的html源代码。你没有看到这样的文字而只看到数字,那么内容就不会写成base64字符串了。