1

如何使用 Castor XML 将 java.awt.Image 对象编组为 XML,或使 XML 以某种方式引用图像。

干杯,
皮特

4

4 回答 4

1

我想您可以编写自己的字段处理程序。我,我会将图像本身写入一个位置并从 xml 中引用图像。

于 2009-03-07T14:57:55.360 回答
0

我不知道你是否可以直接存储图像。您可以尝试获取栅格并存储每个像素。

于 2009-03-07T14:43:04.740 回答
0

这完全取决于将使用 XML 的内容。正如 jjungnickel 所说,最简单的方法是将图像写入文件,然后在 XML 中引用该文件。您可以通过以下方式做到这一点:

  • 将文件名(相对或绝对)放入 XML
  • 在 XML 中放置一个 XML 实体引用,这取决于图像的编码方式,它可能有效,也可能无效

图像——二进制内容——可以进入 XML,但它需要更多的特殊处理。将文件名放入 XML 然后单独打开该文件要容易得多,但这取决于XML使用者的需要。

现在,如果您想使用 Castor 来执行此操作,序列化文件名比序列化图像本身要容易得多。如果要将图像本身放入 XML 中,则需要编写自定义字段处理程序。当我将 Castor 用于涉及图像的 XML 时,我总是将文件名放在 XML 中,而不是图像本身,然后 XML 使用者读取文件名并使用它来序列化图像。

于 2009-03-07T16:56:39.583 回答
0

您当然可以对 gif/jpg/whatever 进行 base64 编码,并将其包装在一个或任何类型的标签中。正如 Jan 建议的那样,您可以使用自定义 FieldHandler 来执行此操作(我在 Castor 中至少五年没有这样做了)。

真正的问题是:你的目标是什么?您是否正在尝试设计一种可以将图像数据与“正常”信息一起传递的互操作方案?您是否尝试将数据作为 XML 保存在您自己的系统中?如果您尝试进行互操作,为了简单起见,我会选择 Base64 路线。几乎任何具有 XML 解析器的语言也将具有 Base64 包,因此不会给对方带来过度的负担。

如果您在您控制的系统中保留 XML 文档,我会考虑其他发帖人的建议,即在 XML 中为存储在某处的图像文件提供密钥,尤其是在图像很大或很多的情况下。

于 2009-05-22T03:37:18.810 回答