[{"id":"840f0737-df1d-47ae-bb0a-359b01fe0608","tags":[{"product":null,"links":null,"id":"adf72f47-7f61-4239-8392-b9bcc127fa80","name":"\u65B0\u589E","color":"green","productId":"0995490e-43fc-4d6e-bc8d-8e66f38b0c63"}]},{"id":"d5d9cdef-8854-4505-89be-a2bbc3cb4482","tags":[{"product":null,"links":null,"id":"adf72f47-7f61-4239-8392-b9bcc127fa80","name":"\u65B0\u589E","color":"green","productId":"0995490e-43fc-4d6e-bc8d-8e66f38b0c63"}]},{"id":"3dc3dd55-35b0-4d23-bf62-47bc3650e4ee","tags":[{"product":null,"links":null,"id":"adf72f47-7f61-4239-8392-b9bcc127fa80","name":"\u65B0\u589E","color":"green","productId":"0995490e-43fc-4d6e-bc8d-8e66f38b0c63"}]},{"id":"80d84fbc-d0f8-4e4a-947f-e3e4de9b49b2","tags":[{"product":null,"links":null,"id":"adf72f47-7f61-4239-8392-b9bcc127fa80","name":"\u65B0\u589E","color":"green","productId":"0995490e-43fc-4d6e-bc8d-8e66f38b0c63"}]},{"id":"9152b7ca-0186-4fe3-a26f-5a05f322db07","tags":[{"product":null,"links":null,"id":"adf72f47-7f61-4239-8392-b9bcc127fa80","name":"\u65B0\u589E","color":"green","productId":"0995490e-43fc-4d6e-bc8d-8e66f38b0c63"}]}]
        
(Showing Draft Content)

报表内显示Base64格式的图片

报表的图片元素支持外部图片、内嵌图片、数据库二进制图片(Image字段),只需简单绑定数据集字段即可。

如果数据库字段值不是二进制的Image,而是字符型的Base64格式的字符串,那么可以使用 Convert.FromBase64String 表达式来转换。

实现方法

具体操作方法如下:

1. 数据库表设计字符型字段

如下图:

164632h3ph3oizeh9pj5gz.png

图中的Base64字段类型为varchar(MAX),就是用于保存图片的Base64内容的。

2. 准备Base64字段内容

实际项目中,数据库中的Base64字符串都是通过程序代码转换得到的。

如果想要手工将一个图片转成Base64字符串,可使用网上的图片转Base64的工具,一般上传一个图片文件,转换之后就能得到下面这样的字符串:

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARMAAAGB....

将这个字符串从转换工具的网页上拷贝下来,去掉最前面的 data:image/png;base64, (包括最后的逗号),再粘贴到数据库的字段中,如下图:


165933geag1mjm7sa7jsmj.png

当然使用insert语句也可以。

3. 拖放图片元素到报表

如下图,在一个表格的单元格中拖放一个图片元素:

170230su05310w1z0n500a.png

4. 设置图片的数据

先展开图片元素的【图片】属性,以便看到更多设置选项,如下图:

170352tohredrjkjyxkdd2.png


再点击【数据】右侧的小方块图标,打开表达式编辑器,输入下面这样的表达式:

{Convert.FromBase64String(Base64)}

如下图:

image2020-11-6_11-37-32.png

这个表达式的含义是:将Base64字段值转成二进制的图片。

这样设置后,就可以预览报表了,效果如下图:

172034o883t7nxxi58iftt.png


其中表格第三列是显示Base64字段的实际字符串内容,最后一列的红色块是实际的图片。