XSL - 显示存储为 blob 的图像

Posted

技术标签:

【中文标题】XSL - 显示存储为 blob 的图像【英文标题】:XSL - Show an image stored as a blob 【发布时间】:2018-10-07 00:29:57 【问题描述】:

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

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

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

现在,图片以 blob 形式存储在数据库中。 VARBINARY 字段。

如何从 blob 源设置 &lt;img&gt; 标记?

我已经阅读了几个类似问题的答案 here 和 here,但它们不适合我的情况,或者我无法做到。

是否可以仅使用 XSL 模板来完成它?

我已经尝试过这个(以及类似的变体):

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

【问题讨论】:

【参考方案1】:

如果图像采用 FOP 支持的格式(可能)并且您可以将图像转换为 Base64 (?)并且FOP 可以使用data: 方案在src 属性值中内联图像数据(我找不到任何可以或不能说它可以或不能的东西)然后您可以执行以下操作:

<fo:external-graphic
src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAB
3RJTUUH1AIFCDIuN9BfzQAAAAlw ... ="/>

否则,您可能必须想出一个 URL 来输入 src 属性值,以便 FOP 可以直接从数据库中访问图像。

【讨论】:

谢谢!您的回答使我走上了正确的道路。经过几次测试,我放弃了 FOP,现在我使用:'' 它对您有用,这很好。你现在用什么代替 FOP? FWIW,AH Formatter 支持data: 方案:antennahouse.com/product/ahf65/ahf-gra.html 我用 FME 创建了第一个二进制文件,我认为它是 Base64,但似乎不是。我已将其编码为 Binary64 并将其存储在数据库中的 VARCHAR 中。在我的 XSL 模板中,我没有使用 FOP 或任何类似的东西,只是使用了带有 src 参数的 &lt;img&gt; 标记,就像您发布的那样。它在 ArcMap 中工作,所以谢谢!

以上是关于XSL - 显示存储为 blob 的图像的主要内容,如果未能解决你的问题,请参考以下文章

在模板中显示存储为二进制 blob 的图像

无法在颤动中将 blob 显示为图像

如何调整我的模型以将上传的图像存储到我的数据库作为图像的链接而不是显示为 blob?

将blob图像转换为数组以显示在spring mvc的网页中

如何将 blob 转换为图像并在 React 上显示?

将 App Engine Datastore 中的 Blob 显示为图像