public interface ImageTranscoder
提供元数据代码转换功能的接口。
只要先执行读取操作,然后执行写入操作,任何图像都可以进行代码转换(写入为一种与原存储格式不同的格式)。不过,由于格式的不同,这一过程中可能会丢失数据。
通常,如果可以创建特定于格式的元数据对象来封装尽可能多的有关图像及其关联元数据的信息(以能被用来执行编码的特定 ImageWriter
所理解的形式),则可以获得最好的结果。
ImageTranscoder
可以用来将 ImageReader
所提供的 IIOMetadata
对象(表示每流和每图像元数据)转换成适合特定 ImageWriter
编码的相应对象。在直接对 ImageWriter
调用此接口方法的情况下,输出将适合该 writer。
将 IIOMetadata
对象转换成特定于 writer 的格式的内部细节将根据操作上下文的不同而不同。通常,ImageWriter
将检查传入的对象,查看它是否实现了该 writer 熟悉的其他接口。这种情况是有可能的,例如,如果该对象是通过在 reader 插件上使用读取操作获得的,而该插件由与 writer 相同的供应商写入。在这种情况下,writer 可以通过使用其特定于插件的接口来访问传入的对象。在这种情况下,如果图像文件格式保持不变,重新编码可能接近于无损失。如果格式是变化的,则 writer 仍然可以试着保留尽可能多的信息。
如果传入对象没有实现 writer 已知的任何其他接口,则该 writer 别无选择,只能通过标准 IIOMetadata
接口(比如 IIOMetadata.getAsTree
提供的树型视图)访问它。在这种情况下,很可能会有信息的严重丢失。
独立的 ImageTranscoder
实质上与上例中的 writer 插件起着相同的作用。它必须熟悉由 reader 和 writer 插件使用的私有接口,并手工实例化可由 writer 使用的对象。得到的元数据对象可由 writer 直接使用。
该标准 API 中不提供任何 ImageTranscoder
的独立实现。相反,此接口的用途是在需要时为将由应用程序创建和开发的实现提供一种方法。
方法摘要 | |
---|---|
IIOMetadata |
convertImageMetadata(IIOMetadata inData, ImageTypeSpecifier imageType, ImageWriteParam param) 返回一个 IIOMetadata 对象,该对象可用于编码,并且可以使用其文档接口或特定于将用于编码的 writer 插件的其他接口有选择地对其进行修改。 |
IIOMetadata |
convertStreamMetadata(IIOMetadata inData, ImageWriteParam param) 返回一个 IIOMetadata 对象,该对象可用于编码,并且可以使用其文档接口或特定于将用于编码的 writer 插件的其他接口有选择地对其进行修改。 |
方法详细信息 |
---|
IIOMetadata convertStreamMetadata(IIOMetadata inData, ImageWriteParam param)
IIOMetadata
对象,该对象可用于编码,并且可以使用其文档接口或特定于将用于编码的 writer 插件的其他接口有选择地对其进行修改。
可以提供一个可选的 ImageWriteParam
,用于其能影响流元数据的结构的情况。
如果所提供的 ImageWriteParam
包含可选的、不被此 writer 或 transcoder 理解的设置值,则忽略这些值。
inData
- 表示流元数据的
IIOMetadata
对象,用于初始化所返回对象的状态。
param
- 将用于对图像进行编码的
ImageWriteParam
,或者为
null
。
IIOMetadata
对象,如果插件没有提供元数据编码功能,则返回
null
。
IllegalArgumentException
- 如果
inData
为
null
。
IIOMetadata convertImageMetadata(IIOMetadata inData, ImageTypeSpecifier imageType, ImageWriteParam param)
IIOMetadata
对象,该对象可用于编码,并且可以使用其文档接口或特定于将用于编码的 writer 插件的其他接口有选择地对其进行修改。
可以提供一个可选的 ImageWriteParam
,用于其能影响图像元数据的结构的情况。
如果所提供的 ImageWriteParam
包含可选的、不被此 writer 或 transcoder 理解的设置值,则忽略这些值。
inData
- 表示图像元数据的
IIOMetadata
对象,用于初始化所返回对象的状态。
imageType
- 指示将与元数据关联的图像的布局和颜色信息的
ImageTypeSpecifier
。
param
- 将用于对图像进行编码的
ImageWriteParam
,或者为
null
。
IIOMetadata
对象,如果插件没有提供元数据编码功能,则返回
null
。
IllegalArgumentException
- 如果
inData
或
imageType
为
null
。