Java:将 Castor XML 与图像结合使用

发布于 2024-07-14 06:34:44 字数 92 浏览 8 评论 0原文

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

干杯,
皮特

how can I use Castor XML to marshal a java.awt.Image object to XML, or make the XML reference the image in some way.

Cheers,
Pete

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

水晶透心 2024-07-21 06:34:44

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

I guess you could write your own field handler. Me, I'd write the image itself to a location and reference the image from within the xml.

望她远 2024-07-21 06:34:44

不知道能不能直接保存图片。 您可以尝试获取光栅并存储每个像素。

I don't know if you can store the image directly. You could try to get the raster and store each pixel.

究竟谁懂我的在乎 2024-07-21 06:34:44

这完全取决于 XML 的用途。 正如 jjungnickel 所说,最简单的方法是将图像写入文件,然后在 XML 中引用该文件。 您可以通过以下方式执行此操作:

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

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

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

This depends entirely on what will consume the XML. As jjungnickel, said, the easiest way to do this is to write the image to a file and then reference this file within XML. You can do this by:

  • Put the filename (relative or absolute) in the XML
  • Put an XML entity reference in the XML, which may or may not work depending on how the image is encoded

Images -- binary content -- can go into XML, but it requires more special handling. It's a lot easier to put the filename into XML and then to open that file separately, but this depends on the needs of the consumer of the XML.

Now, if you want to use Castor to do this, it's a lot easier to serialize the filename rather than the image itself. If you want to put the image itself in the XML, you'll need to write a custom field handler. When I've used Castor for XML that involved images, I always put the filename in the XML, not the image itself, and then the XML consumer read the filename and used that to serialize the image.

墨离汐 2024-07-21 06:34:44

您当然可以对 gif/jpg/任何内容进行 base64 编码,然后将其包装在任何类型的标签中。 正如 Jan 所建议的,您可以使用自定义 FieldHandler 来执行此操作(我至少五年没有在 Castor 中执行此操作)。

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

如果您要在您控制的系统中保留 XML 文档,我会考虑其他发帖者的建议,即在 XML 中为存储在某处的图像文件提供密钥,特别是当图像很大或数量很多时。

You could certainly base64 encode a gif/jpg/whatever an wrap it in an or whatever sort of tag. As Jan suggested, you can use a custom FieldHandler to do this (which I haven't done in Castor for at least five years).

The real question is this: What is your goal? Are you trying to design an inter-op scheme that can pass image data along with "normal" information? Are you trying to persist your data as XML in your own systems? If you are trying to do inter-op, I'd go the Base64 route for simplicity. Almost any language with an XML parser will have a Base64 package as well, so it wouldn't place an undue burden on the other party.

If you are persisting XML documents within systems that you control, I'd consider the other posters' suggestion to provide a key in the XML to an image file stored somewhere, especially if the images are large or numerous.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文