public interface ImageTranscoder
任何图像都可以通过执行读取操作,然后进行写入操作,进行代码转换(写入与原始存储的格式不同的格式)。 但是,由于格式差异,在此过程中可能会发生数据丢失。
一般来说,当可以创建特定于格式的元数据对象以便尽可能多地封装关于图像及其相关联的元数据的信息时,将获得最佳结果,这些信息被用于执行编码的特定ImageWriter
所ImageWriter
。
一个ImageTranscoder
可以用于将转换IIOMetadata
通过所供给的对象ImageReader
(每流和每个图像元数据表示)转换成相应的由一个特定的对象适合于编码ImageWriter
。 在直接在ImageWriter
上调用该接口的方法的情况下,输出将适用于该作者。
将IIOMetadata
对象转换为写入器特定格式的内部细节将根据操作的上下文而变化。 通常, ImageWriter
将检查传入对象,看看它是否实现了作者熟悉的其他接口。 这可能是这种情况,例如,如果对象是通过与作者写入的读写器插件的读操作获得的。 在这种情况下,写入器可以通过其插件特定接口来访问传入对象。 在这种情况下,如果图像文件格式保持不变,则重新编码可能接近无损。 如果格式发生变化,作者可能仍然尝试保留尽可能多的信息。
如果传入对象没有实现写入器已知的任何其他接口,则作者无需通过标准IIOMetadata
接口访问它,例如由IIOMetadata.getAsTree
提供的树视图。 在这种情况下,可能会有重大的信息丢失。
独立的ImageTranscoder
在上述例子中基本上扮演着与插件相同的角色。 它必须熟悉读写器插件使用的专用接口,并手动实例化作者可使用的对象。 生成的元数据对象可以由作者直接使用。
作为标准API的一部分,没有提供ImageTranscoder的ImageTranscoder
实现。 相反,该接口的目的是提供一种在需要时由应用程序创建和发现实现的方法。
Modifier and Type | Method and Description |
---|---|
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
包含此作者或代码转换器不能理解的可选设置值,则它们将被忽略。
inData
- 一个
IIOMetadata
流元数据的
IIOMetadata
对象,用于初始化返回对象的状态。
param
-一个
ImageWriteParam
将被用于对图像,或编码
null
。
IIOMetadata
对象,或
null
如果插件不提供元数据编码功能。
IllegalArgumentException
- 如果
inData
是
null
。
IIOMetadata convertImageMetadata(IIOMetadata inData, ImageTypeSpecifier imageType, ImageWriteParam param)
IIOMetadata
对象,并可使用其文档接口或特定于将用于编码的writer插件的其他接口进行修改。
可能会为可能影响图像元数据结构的情况提供可选的ImageWriteParam
。
如果提供的ImageWriteParam
包含此写入器或代码转换器不能理解的可选设置值,则它们将被忽略。
inData
- 表示图像元数据的
IIOMetadata
对象,用于初始化返回对象的状态。
imageType
-
ImageTypeSpecifier
,其指示将与元数据相关联的图像的布局和颜色信息。
param
-一个
ImageWriteParam
将被用于对图像,或编码
null
。
IIOMetadata
对象,或
null
如果插件并未提供元数据编码功能。
IllegalArgumentException
- 如果
inData
或
imageType
中的任何一个是
null
。