XSL - 显示存储为blob的图像

时间:2018-04-26 10:31:40

标签: sql-server xslt blob xsl-fo

最初,我在SQL Server中有一个表,其中包含一个包含图片URL的字段。

我创建了一个XSL模板来自定义ArcMap中该表的信息窗口。要显示该图像我只需要这样做:

<xsl:variable name="pic" select="$theField[FieldName='PIC']/FieldValue"/>
<img border="0" src="{$pic}" width="200"/>

现在,图片作为blob存储在数据库中。 VARBINARY字段。

如何从blob源设置<img>标记?

我一直在阅读类似问题herehere的几个答案,但它们不符合我的情况,或者我无法做到这一点。

甚至可以只使用XSL模板来完成它吗?

我已经尝试过这个(和类似的变化):

<fo:instream-foreign-object content-type="image/png">
    <xsl:variable name="pic" select="$theField[FieldName='PIC']/FieldValue"/>
    <img border="0" src="{$pic}" width="200"/>
</fo:instream-foreign-object>

1 个答案:

答案 0 :(得分:1)

如果图像采用FOP支持的格式(可能),您可以将图像转换为Base64(?) FOP可以使用{{1}计划内联data:属性值中的图像数据(我无法找到可以或不可以说的任何内容)然后您可以执行以下操作:

src

否则,您可能需要提供一个URL以放入<fo:external-graphic src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAB 3RJTUUH1AIFCDIuN9BfzQAAAAlw ... ="/> 属性值,以便FOP可以直接从数据库访问该图像。