0

This is my loop for loading images from Binary[] (SqlServerCe). Each image is stored in a list holding a byte array:

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

The imgMIME variable contains values like:

image/png
image/bmp

and so on.

My current code looks like this:

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

On my page i get an error image for each of these loaded images. May someone please help me solve this out?

Thank you for your time.

4

1 回答 1

1

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

data:MIMETYPE;base64,CONTENT_AS_BASE64_STRING

字符串中不应有花括号({})。您可以在本文中阅读有关内嵌图像的更多信息。

看起来您正在将字节写入内联图像。当内容以Base64 格式的字符串形式给出时,内联图像有效。这就是为什么您需要使用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" />

它看起来像这样:

内联图像输出

查看图像元素中的 html 源代码。如果您看不到这样的文本而只看到数字,那么内容不会被写为 base64 字符串。

于 2013-11-10T10:55:29.440 回答