Module java.desktop
Package javax.imageio

Interface ImageTranscoder

所有已知的实现类:
ImageWriter

public interface ImageTranscoder
一个提供元数据转码功能的接口。

任何图像都可以通过执行读取操作后跟写入操作来进行转码(写入到与最初存储格式不同的格式)。然而,由于格式差异,此过程可能会导致数据丢失。

一般来说,当特定于格式的元数据对象能够被创建以封装关于图像及其相关元数据的尽可能多的信息时,将实现最佳结果,这些信息以特定于执行编码的具体ImageWriter能理解的术语表示。

一个ImageTranscoder可用于将由ImageReader提供的IIOMetadata对象(表示每个流和每个图像的元数据)转换为适合由特定ImageWriter进行编码的相应对象。在直接在ImageWriter上调用此接口的情况下,输出将适用于该写入器。

IIOMetadata对象转换为特定于写入器的格式的内部细节将根据操作的上下文而变化。通常,一个ImageWriter将检查传入的对象,看看它是否实现了写入器熟悉的附加接口。例如,如果对象是通过与写入器同一供应商编写的读取插件的读取操作获得的,则可能是这种情况。在这种情况下,写入器可以通过其插件特定接口访问传入对象。在这种情况下,如果图像文件格式保持不变,重新编码可能接近无损。如果格式正在更改,写入器仍可能尝试尽可能保留更多信息。

如果传入对象不实现写入器已知的任何附加接口,则写入器别无选择,只能通过IIOMetadata.getAsTree提供的标准IIOMetadata接口(如树视图)访问它。在这种情况下,可能会丢失大量信息。

一个独立的ImageTranscoder本质上承担了上述示例中写入器插件的角色。它必须熟悉读取器和写入器插件使用的私有接口,并手动实例化一个可被写入器使用的对象。生成的元数据对象可以直接被写入器使用。

标准API中不提供ImageTranscoder的独立实现。相反,此接口的目的是为应用程序提供一种在需要时创建和发现实现的方式。

  • Method Details

    • convertStreamMetadata

      IIOMetadata convertStreamMetadata(IIOMetadata inData, ImageWriteParam param)
      返回一个IIOMetadata对象,可用于编码并可选择使用其文档接口或其他特定于将用于编码的写入器插件的接口进行修改。

      在可能影响流元数据结构的情况下,可以提供可选的ImageWriteParam

      如果提供的ImageWriteParam包含此写入器或转码器不理解的可选设置值,则它们将被忽略。

      参数:
      inData - 代表流元数据的IIOMetadata对象,用于初始化返回对象的状态。
      param - 将用于编码图像的ImageWriteParam,或null
      返回:
      一个IIOMetadata对象,如果插件不提供元数据编码功能,则为null
      抛出:
      IllegalArgumentException - 如果inDatanull
    • convertImageMetadata

      IIOMetadata convertImageMetadata(IIOMetadata inData, ImageTypeSpecifier imageType, ImageWriteParam param)
      返回一个IIOMetadata对象,可用于编码并可选择使用其文档接口或其他特定于将用于编码的写入器插件的接口进行修改。

      在可能影响图像元数据结构的情况下,可以提供可选的ImageWriteParam

      如果提供的ImageWriteParam包含此写入器或转码器不理解的可选设置值,则它们将被忽略。

      参数:
      inData - 代表图像元数据的IIOMetadata对象,用于初始化返回对象的状态。
      imageType - 指示元数据将与之关联的图像的布局和颜色信息的ImageTypeSpecifier
      param - 将用于编码图像的ImageWriteParam,或null
      返回:
      一个IIOMetadata对象,如果插件不提供元数据编码功能,则为null
      抛出:
      IllegalArgumentException - 如果inDataimageTypenull