【问题标题】:XSL - Show an image stored as a blobXSL - 显示存储为 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}" width="200"/>

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

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

我已经阅读了几个类似问题的答案 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>

【问题讨论】:

    标签: sql-server xslt blob xsl-fo


    【解决方案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 中工作,所以谢谢!
    猜你喜欢
    • 2017-04-28
    • 2011-07-28
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    • 2021-10-29
    • 2011-09-15
    • 1970-01-01
    相关资源
    最近更新 更多