- 所有已实现的接口:
-
ImageTranscoder
ImageWriter对象通常由特定格式的服务提供者类实例化。服务提供者类已在IIORegistry中注册,IIORegistry用于格式识别和显示可用格式的读取器和写入器。
- 参见:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected Locale[]可用于本地化警告消息和压缩设置值的Locale数组,如果不支持本地化,则为null。protected Locale用于本地化的当前Locale,如果未设置则为null。protected ImageWriterSpi实例化此对象的ImageWriterSpi,如果其标识未知或不存在,则为null。protected Object由setOutput设置并由getOutput检索的ImageOutputStream或其他Object。protected List<IIOWriteProgressListener> 当前注册的IIOWriteProgressListener列表,默认初始化为null,与空List同义。protected List<IIOWriteWarningListener> 当前注册的IIOWriteWarningListener列表,默认初始化为null,与空List同义。一个Locale列表,每个元素对应warningListeners的一个元素,默认初始化为null,与空List同义。 -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedImageWriter(ImageWriterSpi originatingProvider) 构造一个ImageWriter并将其originatingProvider实例变量设置为提供的值。 -
Method Summary
Modifier and TypeMethodDescriptionvoidabort()请求中止当前写操作。protected boolean如果自实例化以来已发出中止当前写操作的请求或已调用clearAbortRequest,则返回true。void将IIOWriteProgressListener添加到已注册进度侦听器列表中。void将IIOWriteWarningListener添加到已注册警告侦听器列表中。booleancanInsertEmpty(int imageIndex) 如果写入器支持在给定索引处插入新的空图像,则返回true。booleancanInsertImage(int imageIndex) 如果写入器支持在给定索引处插入新图像,则返回true。booleancanRemoveImage(int imageIndex) 如果写入器支持删除给定索引处的现有图像,则返回true。booleancanReplaceImageMetadata(int imageIndex) 如果可以替换与索引imageIndex关联的现有图像的图像元数据,则返回true。booleancanReplacePixels(int imageIndex) 如果写入器允许使用replacePixels方法替换给定图像的像素,则返回true。boolean如果可以替换输出中已存在的流元数据,则返回true。boolean如果写入器支持写入完整图像流,该流由单个具有未定义像素值和相关元数据和缩略图的图像组成,则返回true。boolean如果接受IIOImage参数的方法能够处理Raster(而不是RenderedImage)源图像,则返回true。boolean如果写入器能够将图像附加到已包含标头信息和可能先前图像的图像流中,则返回true。protected void清除任何先前的中止请求。voiddispose()允许释放此对象持有的任何资源。void完成以前调用prepareInsertEmpty开始的新图像的插入。void终止对replacePixels的一系列调用。void完成以前调用prepareWriteEmpty开始的新图像的写入。void完成以prepareWriteSequence开始的一系列图像的写入。Locale[]返回一个Locale数组,可用于本地化警告侦听器和压缩设置。abstract IIOMetadatagetDefaultImageMetadata(ImageTypeSpecifier imageType, ImageWriteParam param) 返回包含给定类型图像的编码的默认值的IIOMetadata对象。abstract IIOMetadata返回包含编码图像流的默认值的IIOMetadata对象。返回适用于此文件格式的ImageWriteParam对象的默认值,即如果未指定ImageWriteParam对象,则将使用这些值。返回当前设置的Locale,如果未设置则返回null。intgetNumThumbnailsSupported(ImageTypeSpecifier imageType, ImageWriteParam param, IIOMetadata streamMetadata, IIOMetadata imageMetadata) 返回在编码期间将使用的附加写参数和元数据对象的情况下,支持的输出文件中的缩略图数量。返回创建此ImageWriter的ImageWriterSpi对象,如果此对象不是通过IIORegistry创建的,则返回null。返回最近一次调用setOutput方法设置的ImageOutputStream或其他Object。getPreferredThumbnailSizes(ImageTypeSpecifier imageType, ImageWriteParam param, IIOMetadata streamMetadata, IIOMetadata imageMetadata) 返回指示将在输出文件或流中编码的缩略图图像的合法大小范围的Dimension数组。voidprepareInsertEmpty(int imageIndex, ImageTypeSpecifier imageType, int width, int height, IIOMetadata imageMetadata, List<? extends BufferedImage> thumbnails, ImageWriteParam param) 开始将具有未定义像素值的新图像插入到现有图像流中。voidprepareReplacePixels(int imageIndex, Rectangle region) 准备写入器以处理对replacePixels方法的一系列调用。voidprepareWriteEmpty(IIOMetadata streamMetadata, ImageTypeSpecifier imageType, int width, int height, IIOMetadata imageMetadata, List<? extends BufferedImage> thumbnails, ImageWriteParam param) 开始写入完整图像流,包括具有未定义像素值和相关元数据和缩略图的单个图像。voidprepareWriteSequence(IIOMetadata streamMetadata) 准备流以接受一系列后续writeToSequence调用,使用提供的流元数据对象。protected void通过调用它们的imageComplete方法向所有已注册的IIOWriteProgressListener广播图像写入的完成。protected voidprocessImageProgress(float percentageDone) 通过调用它们的imageProgress方法向所有已注册的IIOWriteProgressListener广播当前图像完成的百分比。protected voidprocessImageStarted(int imageIndex) 通过调用它们的imageStarted方法向所有已注册的IIOWriteProgressListener广播图像写入的开始。protected void通过调用它们的thumbnailComplete方法向所有已注册的IIOWriteProgressListener广播缩略图写入的完成。protected voidprocessThumbnailProgress(float percentageDone) 通过调用它们的thumbnailProgress方法向所有已注册的IIOWriteProgressListener广播当前缩略图完成的百分比。protected voidprocessThumbnailStarted(int imageIndex, int thumbnailIndex) 通过调用它们的thumbnailStarted方法向所有已注册的IIOWriteProgressListener广播缩略图写入的开始。protected voidprocessWarningOccurred(int imageIndex, String warning) 通过调用它们的warningOccurred方法向所有已注册的IIOWriteWarningListener广播警告消息。protected voidprocessWarningOccurred(int imageIndex, String baseName, String keyword) 通过从ResourceBundle中获取字符串,通过调用它们的warningOccurred方法向所有已注册的IIOWriteWarningListener广播本地化的警告消息。protected void通过调用它们的writeAborted方法向所有已注册的IIOWriteProgressListener广播写入已中止的消息。void移除所有当前注册的IIOWriteProgressListener对象。void移除所有当前注册的IIOWriteWarningListener对象。void从已注册的进度侦听器列表中移除一个IIOWriteProgressListener。void从已注册的警告侦听器列表中移除一个IIOWriteWarningListener。voidremoveImage(int imageIndex) 从流中移除一个图像。voidreplaceImageMetadata(int imageIndex, IIOMetadata imageMetadata) 替换与现有图像关联的图像元数据。voidreplacePixels(Raster raster, ImageWriteParam param) 用给定Raster的一部分替换输出中已存在的图像的一部分。voidreplacePixels(RenderedImage image, ImageWriteParam param) 用给定图像的一部分替换输出中已存在的图像的一部分。voidreplaceStreamMetadata(IIOMetadata streamMetadata) 用新信息替换输出中的流元数据。voidreset()将ImageWriter恢复到初始状态。void将此ImageWriter的当前Locale设置为给定值。void将目的地设置为给定的ImageOutputStream或其他Object。voidwrite(RenderedImage image) 将包含默认元数据和缩略图的单个图像的完整图像流附加到输出。void将包含默认元数据和缩略图的单个图像的完整图像流附加到输出。abstract voidwrite(IIOMetadata streamMetadata, IIOImage image, ImageWriteParam param) 将包含单个图像及相关流和图像元数据和缩略图的完整图像流附加到输出。voidwriteInsert(int imageIndex, IIOImage image, ImageWriteParam param) 将新图像插入到现有图像流中。voidwriteToSequence(IIOImage image, ImageWriteParam param) 将单个图像及可能相关的元数据和缩略图附加到输出。Methods declared in class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods declared in interface javax.imageio.ImageTranscoder
convertImageMetadata, convertStreamMetadata
-
Field Details
-
originatingProvider
实例化此对象的ImageWriterSpi,如果其标识未知或不存在,则为null。默认情况下,它初始化为null。 -
output
由setOutput设置并由getOutput检索的ImageOutputStream或其他Object。默认情况下,它初始化为null。 -
availableLocales
可用于本地化警告消息和压缩设置值的Locale数组,如果不支持本地化,则为null。默认情况下,它初始化为null。 -
locale
用于本地化的当前Locale,如果尚未设置,则为null。默认情况下,它被初始化为null。 -
warningListeners
当前注册的IIOWriteWarningListener的List,默认情况下初始化为null,与空List同义。 -
warningLocales
一个List,包含每个warningListeners元素的Locale,默认情况下初始化为null,与空List同义。 -
progressListeners
当前注册的IIOWriteProgressListener的List,默认情况下初始化为null,与空List同义。
-
-
Constructor Details
-
ImageWriter
构造一个ImageWriter并将其originatingProvider实例变量设置为提供的值。使用扩展的子类应该提供一个带有签名
(ImageWriterSpi, Object)的构造函数,以便检索扩展对象。如果扩展对象不合适,则应抛出IllegalArgumentException。- 参数:
-
originatingProvider- 构造此对象的ImageWriterSpi,或null。
-
-
Method Details
-
getOriginatingProvider
返回创建此ImageWriter的ImageWriterSpi对象,如果此对象不是通过IIORegistry创建的,则返回null。默认实现返回
originatingProvider实例变量的值。- 返回:
-
一个
ImageWriterSpi,或null。 - 参见:
-
setOutput
将目的地设置为给定的ImageOutputStream或其他Object。假定目的地已准备好接受数据,并且不会在每次写入结束时关闭。这允许分布式成像应用程序通过单个网络连接传输一系列图像。如果output为null,则将删除任何当前设置的输出。如果
output是ImageOutputStream,则对write、writeToSequence和prepareWriteEmpty/endWriteEmpty方法的调用将保留流的现有内容。其他写入方法,如writeInsert、replaceStreamMetadata、replaceImageMetadata、replacePixels、prepareInsertEmpty/endInsertEmpty和endWriteSequence,需要流的全部内容可读可写,并且可能更改流的任何部分。除了
ImageOutputStream之外的一般Object的使用适用于直接与输出设备或成像协议交互的写入器。合法类的集合由写入器的服务提供程序的getOutputTypes方法进行广告;大多数写入器将返回一个只包含ImageOutputStream.class的单元素数组,以指示它们仅接受ImageOutputStream。默认实现在检查
output与原始提供程序广告的类集合之间的匹配后,将output实例变量设置为output的值。- 参数:
-
output- 用于将来写入的ImageOutputStream或其他Object。 - 抛出:
-
IllegalArgumentException- 如果output不是由原始服务提供程序的getOutputTypes方法返回的类之一的实例。 - 参见:
-
getOutput
返回最近一次调用setOutput方法设置的ImageOutputStream或其他Object。如果尚未设置目的地,则返回null。默认实现返回
output实例变量的值。- 返回:
-
通过
setOutput指定的Object,或null。 - 参见:
-
getAvailableLocales
返回一个Locale数组,可用于本地化警告侦听器和压缩设置。返回null表示不支持本地化。如果
availableLocales实例变量为非null,则默认实现返回availableLocales实例变量的克隆,否则返回null。- 返回:
-
一个
Locale数组,可用作setLocale的参数,或null。
-
setLocale
将此ImageWriter的当前Locale设置为给定值。值为null会删除任何先前的设置,并指示写入器应根据自己的判断进行本地化。默认实现检查
locale与getAvailableLocales返回的值是否匹配,并在找到时设置locale实例变量。如果locale为null,则实例变量将被设置为null而不进行任何检查。- 参数:
-
locale- 所需的Locale,或null。 - 抛出:
-
IllegalArgumentException- 如果locale为非null但不是getAvailableLocales返回的值之一。 - 参见:
-
getLocale
返回当前设置的Locale,如果尚未设置,则返回null。默认实现返回
locale实例变量的值。- 返回:
-
当前
Locale,或null。 - 参见:
-
getDefaultWriteParam
返回适用于此文件格式的ImageWriteParam对象的新实例,包含默认值,即如果未指定ImageWriteParam对象,则将使用的值。这对于调整仅有少量参数并保持默认设置不变非常有用。默认实现构造并返回一个新的
ImageWriteParam对象,不允许平铺、渐进编码或压缩,并且将为当前Locale本地化(即,通过调用new ImageWriteParam(getLocale())获得的值)。各个插件可以返回启用了其他可选功能的
ImageWriteParam实例,或者它们可以返回ImageWriteParam的插件特定子类的实例。- 返回:
-
包含默认值的新
ImageWriteParam对象。
-
getDefaultStreamMetadata
返回包含编码图像流的默认值的IIOMetadata对象。可以使用由IIOMetadata.getAsTree方法返回的XML树结构、IIOMetadataController对象或通过插件特定接口操纵对象的内容,并将生成的数据提供给接受流元数据参数的write方法之一。在可能影响流元数据结构的情况下,可以提供可选的
ImageWriteParam。如果提供的
ImageWriteParam包含此写入器不支持的可选设置值(例如渐进编码或任何特定于格式的设置),它们将被忽略。不使用流元数据的写入器(例如,单图像格式的写入器)应返回
null。- 参数:
-
param- 将用于编码图像的ImageWriteParam,或null。 - 返回:
-
一个
IIOMetadata对象。
-
getDefaultImageMetadata
public abstract IIOMetadata getDefaultImageMetadata(ImageTypeSpecifier imageType, ImageWriteParam param) 返回包含编码给定类型图像的默认值的IIOMetadata对象。可以使用由IIOMetadata.getAsTree方法返回的XML树结构、IIOMetadataController对象或通过插件特定接口操纵对象的内容,并将生成的数据提供给接受图像元数据参数的write方法之一。在可能影响图像元数据结构的情况下,可以提供可选的
ImageWriteParam。如果提供的
ImageWriteParam包含此写入器不支持的可选设置值(例如渐进编码或任何特定于格式的设置),它们将被忽略。- 参数:
-
imageType- 指示稍后要写入的图像格式的ImageTypeSpecifier。 -
param- 将用于编码图像的ImageWriteParam,或null。 - 返回:
-
一个
IIOMetadata对象。
-
getNumThumbnailsSupported
public int getNumThumbnailsSupported(ImageTypeSpecifier imageType, ImageWriteParam param, IIOMetadata streamMetadata, IIOMetadata imageMetadata) 返回正在写入的格式支持的缩略图数量,给定图像类型以及在编码期间将使用的任何其他写入参数和元数据对象。返回值为-1表示没有足够的信息可用。可以选择提供
ImageWriteParam,以便在可能影响缩略图处理的情况下使用。如果提供的
ImageWriteParam包含此写入器不支持的可选设置值(例如渐进编码或任何特定于格式的设置),它们将被忽略。默认实现返回0。
- 参数:
-
imageType- 一个指示要写入的图像类型的ImageTypeSpecifier,或null。 -
param- 将用于写入的ImageWriteParam,或null。 -
streamMetadata- 将用于写入的IIOMetadata对象,或null。 -
imageMetadata- 将用于写入的IIOMetadata对象,或null。 - 返回:
-
根据提供的参数返回可能写入的缩略图数量,如果信息不足则返回
-1。
-
getPreferredThumbnailSizes
public Dimension[] getPreferredThumbnailSizes(ImageTypeSpecifier imageType, ImageWriteParam param, IIOMetadata streamMetadata, IIOMetadata imageMetadata) 返回一个Dimension数组,指示缩略图图像在输出文件或流中编码时的合法大小范围。此信息仅供参考;写入器将根据需要调整任何提供的缩略图大小。信息以一组对的形式返回;一对的第一个元素包含一个(包含的)最小宽度和高度,第二个元素包含一个(包含的)最大宽度和高度。每对一起定义一个有效的大小范围。要指定固定大小,两个元素的宽度和高度将相同。返回值为
null表示大小是任意的或未知的。可以选择提供一个
ImageWriteParam,以处理缩略图处理的情况。如果提供的
ImageWriteParam包含此写入器不支持的可选设置值(例如渐进编码或任何特定于格式的设置),它们将被忽略。默认实现返回
null。- 参数:
-
imageType- 一个指示要写入的图像类型的ImageTypeSpecifier,或null。 -
param- 将用于写入的ImageWriteParam,或null。 -
streamMetadata- 将用于写入的IIOMetadata对象,或null。 -
imageMetadata- 将用于写入的IIOMetadata对象,或null。 - 返回:
-
至少有两个偶数长度的
Dimension数组,或null。
-
canWriteRasters
public boolean canWriteRasters()如果接受一个Raster(而不是RenderedImage)源图像的方法能够处理IIOImage参数,则返回true。如果此方法返回false,那么如果提供了包含Raster的IIOImage,这些方法将抛出UnsupportedOperationException。默认实现返回
false。- 返回:
-
如果支持
Raster源,则返回true。
-
write
public abstract void write(IIOMetadata streamMetadata, IIOImage image, ImageWriteParam param) throws IOException 将包含单个图像、相关流和图像元数据以及缩略图的完整图像流附加到输出。将包含任何必要的头信息。如果输出是ImageOutputStream,则在当前寻位位置之前的现有内容不受影响,不需要可读或可写。必须事先使用
setOutput方法设置输出。可以选择提供流元数据;如果为
null,将使用默认流元数据。如果
canWriteRasters返回true,则IIOImage可能包含Raster源。否则,必须包含RenderedImage源。如果需要,提供的缩略图将被调整大小,超出支持数量的任何缩略图将被忽略。如果格式需要提供未提供的额外缩略图,则写入器应在内部生成它们。
可以选择提供
ImageWriteParam以控制写入过程。如果param为null,将使用默认写入参数。如果提供的
ImageWriteParam包含此写入器不支持的可选设置值(例如渐进编码或任何特定于格式的设置),它们将被忽略。- 参数:
-
streamMetadata- 表示流元数据的IIOMetadata对象,或null以使用默认值。 -
image- 包含要写入的图像、缩略图和元数据的IIOImage对象。 -
param- 一个ImageWriteParam,或null以使用默认的ImageWriteParam。 - 抛出:
-
IllegalStateException- 如果未设置输出。 -
UnsupportedOperationException- 如果image包含Raster且canWriteRasters返回false。 -
IllegalArgumentException- 如果image为null。 -
IOException- 如果在写入过程中发生错误。
-
write
将包含默认元数据和缩略图的单个图像流附加到输出。此方法是write(null, image, null)的简写。- 参数:
-
image- 包含要写入的图像、缩略图和元数据的IIOImage对象。 - 抛出:
-
IllegalStateException- 如果未设置输出。 -
IllegalArgumentException- 如果image为null。 -
UnsupportedOperationException- 如果image包含Raster且canWriteRasters返回false。 -
IOException- 如果在写入过程中发生错误。
-
write
将包含默认元数据和缩略图的单个图像流附加到输出。此方法是write(null, new IIOImage(image, null, null), null)的简写。- 参数:
-
image- 要写入的RenderedImage。 - 抛出:
-
IllegalStateException- 如果未设置输出。 -
IllegalArgumentException- 如果image为null。 -
IOException- 如果在写入过程中发生错误。
-
canWriteSequence
public boolean canWriteSequence()如果写入器能够将图像附加到已包含头信息和可能先前图像的图像流中,则返回true。如果
canWriteSequence返回false,writeToSequence和endWriteSequence将抛出UnsupportedOperationException。默认实现返回
false。- 返回:
-
如果可以按顺序附加图像,则返回
true。
-
prepareWriteSequence
使用提供的流元数据对象准备流以接受一系列后续的writeToSequence调用。如果应在图像数据之前写入元数据,则将元数据写入流。如果参数为null,则使用默认流元数据。如果输出是
ImageOutputStream,则在此方法之前刷新输出在当前寻位位置之前的现有内容,不需要可读或可写。如果格式要求endWriteSequence能够倒带以修补头信息,例如单个TIFF文件中的一系列图像,则此方法写入的元数据必须保留在流的可写部分。其他格式可能会在此方法之后和每个图像之后刷新流。如果
canWriteSequence返回false,此方法将抛出UnsupportedOperationException。必须事先使用
setOutput方法设置输出。默认实现如果输出为
null则抛出IllegalStateException,否则抛出UnsupportedOperationException。- 参数:
-
streamMetadata- 一个流元数据对象,或null。 - 抛出:
-
IllegalStateException- 如果未设置输出。 -
UnsupportedOperationException- 如果canWriteSequence返回false。 -
IOException- 如果写入流元数据时发生错误。
-
writeToSequence
追加单个图像及可能相关的元数据和缩略图到输出。如果输出是一个ImageOutputStream,则当前寻位位置之前的输出内容可能会被刷新,不需要可读或可写,除非插件需要在调用endWriteSequence时修补头信息(例如TIFF)。如果
canWriteSequence返回false,此方法将抛出UnsupportedOperationException异常。必须事先使用
setOutput方法设置输出。必须事先调用
prepareWriteSequence,否则将抛出IllegalStateException异常。如果
canWriteRasters返回true,则IIOImage可能包含Raster源。否则,必须包含RenderedImage源。提供的缩略图将根据需要调整大小,超出支持数量的任何缩略图将被忽略。如果格式需要提供未提供的额外缩略图,则编写器将在内部生成它们。
可以选择提供一个
ImageWriteParam来控制写入过程。如果param为null,将使用默认的写入参数。如果提供的
ImageWriteParam包含此编写器不支持的可选设置值(例如渐进编码或任何特定格式的设置),它们将被忽略。如果输出为
null,默认实现将抛出IllegalStateException,否则将抛出UnsupportedOperationException。- 参数:
-
image- 包含要写入的图像、缩略图和元数据的IIOImage对象。 -
param- 一个ImageWriteParam,或null以使用默认的ImageWriteParam。 - 抛出:
-
IllegalStateException- 如果未设置输出,或未调用prepareWriteSequence。 -
UnsupportedOperationException- 如果canWriteSequence返回false。 -
IllegalArgumentException- 如果image为null。 -
UnsupportedOperationException- 如果image包含Raster且canWriteRasters返回false。 -
IOException- 如果写入过程中发生错误。
-
endWriteSequence
完成使用prepareWriteSequence开始的图像序列的写入。将写出应该出现在图像序列末尾的任何流元数据,并在必要时修补序列开头的任何头信息。如果输出是一个ImageOutputStream,则通过流元数据结束时的数据将被刷新,不需要可读或可写。如果
canWriteSequence返回false,此方法将抛出UnsupportedOperationException异常。如果输出为
null,默认实现将抛出IllegalStateException,否则将抛出UnsupportedOperationException。- 抛出:
-
IllegalStateException- 如果未设置输出,或未调用prepareWriteSequence。 -
UnsupportedOperationException- 如果canWriteSequence返回false。 -
IOException- 如果写入过程中发生错误。
-
canReplaceStreamMetadata
如果可能替换输出中已存在的流元数据,则返回true。如果输出为
null,默认实现将抛出IllegalStateException,否则返回false。- 返回:
-
true表示允许替换流元数据。 - 抛出:
-
IllegalStateException- 如果未设置输出。 -
IOException- 如果在查询过程中发生I/O错误。
-
replaceStreamMetadata
用新信息替换输出中的流元数据。如果输出是一个ImageOutputStream,则将检查并可能编辑流的先前内容以为新数据腾出空间。输出的所有先前内容必须可供读取和写入。如果
canReplaceStreamMetadata返回false,将抛出UnsupportedOperationException异常。如果输出为
null,默认实现将抛出IllegalStateException,否则将抛出UnsupportedOperationException。- 参数:
-
streamMetadata- 表示流元数据的IIOMetadata对象,或null以使用默认值。 - 抛出:
-
IllegalStateException- 如果未设置输出。 -
UnsupportedOperationException- 如果canReplaceStreamMetadata返回false。 -
IOException- 如果写入过程中发生错误。
-
canReplaceImageMetadata
如果可以替换与索引imageIndex对应的现有图像的图像元数据,则返回true。如果此方法返回false,则调用replaceImageMetadata(imageIndex)将抛出UnsupportedOperationException异常。不支持任何图像元数据替换的编写器可能会返回
false,而不对索引进行边界检查。如果输出为
null,默认实现将抛出IllegalStateException,否则将根据imageIndex的值返回false。- 参数:
-
imageIndex- 要替换其元数据的图像的索引。 - 返回:
-
true表示可以替换给定图像的图像元数据。 - 抛出:
-
IllegalStateException- 如果未设置输出。 -
IndexOutOfBoundsException- 如果编写器通常支持图像元数据替换,但imageIndex小于0或大于最大可用索引。 -
IOException- 如果在查询过程中发生I/O错误。
-
replaceImageMetadata
替换与现有图像关联的图像元数据。如果
canReplaceImageMetadata(imageIndex)返回false,将抛出UnsupportedOperationException异常。如果输出为
null,默认实现将抛出IllegalStateException,否则将抛出UnsupportedOperationException。- 参数:
-
imageIndex- 要替换其元数据的图像的索引。 -
imageMetadata- 表示图像元数据的IIOMetadata对象,或null。 - 抛出:
-
IllegalStateException- 如果未设置输出。 -
UnsupportedOperationException- 如果canReplaceImageMetadata返回false。 -
IndexOutOfBoundsException- 如果imageIndex小于0或大于最大可用索引。 -
IOException- 如果写入过程中发生错误。
-
canInsertImage
如果编写器支持在给定索引处插入新图像,则返回true。索引大于或等于插入索引的现有图像的索引将增加1。可以使用-1的值作为比当前最大索引大1的索引。不支持任何图像插入的编写器可能会返回
false,而不对索引进行边界检查。如果输出为
null,默认实现将抛出IllegalStateException,否则将根据imageIndex的值返回false。- 参数:
-
imageIndex- 要插入图像的索引。 - 返回:
-
true表示可以在给定索引处插入图像。 - 抛出:
-
IllegalStateException- 如果未设置输出。 -
IndexOutOfBoundsException- 如果编写器通常支持图像插入,但imageIndex小于-1或大于最大可用索引。 -
IOException- 如果在查询过程中发生I/O错误。
-
writeInsert
插入新图像到现有图像流中。保留索引大于imageIndex的现有图像,并且它们的索引都增加1。可以使用imageIndex为-1来表示比先前最大索引大1的索引;也就是说,它将导致图像逻辑上附加到序列的末尾。如果输出是一个ImageOutputStream,则整个流必须可读且可写。如果
canInsertImage(imageIndex)返回false,将抛出UnsupportedOperationException异常。可以选择提供一个
ImageWriteParam来控制写入过程。如果param为null,将使用默认的写入参数。如果提供的
ImageWriteParam包含此写入器不支持的可选设置值(例如渐进编码或任何特定于格式的设置),它们将被忽略。如果输出为
null,默认实现会抛出IllegalStateException,否则会抛出UnsupportedOperationException。- 参数:
-
imageIndex- 要写入图像的索引。 -
image- 包含要写入的图像、缩略图和元数据的IIOImage对象。 -
param- 一个ImageWriteParam,或者null以使用默认的ImageWriteParam。 - 抛出:
-
IllegalStateException- 如果未设置输出。 -
UnsupportedOperationException- 如果canInsertImage(imageIndex)返回false。 -
IllegalArgumentException- 如果image为null。 -
IndexOutOfBoundsException- 如果imageIndex小于-1或大于最大可用索引。 -
UnsupportedOperationException- 如果image包含一个Raster且canWriteRasters返回false。 -
IOException- 如果写入过程中发生错误。
-
canRemoveImage
如果写入器支持删除给定索引处现有图像,则返回true。具有大于插入索引的索引的现有图像的索引将减少1。不支持任何图像删除的写入器可能会在不对索引进行边界检查的情况下返回
false。默认实现会抛出
IllegalStateException(如果输出为null),否则会返回false而不检查imageIndex的值。- 参数:
-
imageIndex- 要删除的图像的索引。 - 返回:
-
true如果可以删除给定的图像。 - 抛出:
-
IllegalStateException- 如果未设置输出。 -
IndexOutOfBoundsException- 如果写入器通常支持图像删除,但imageIndex小于0或大于最大可用索引。 -
IOException- 如果在查询过程中发生I/O错误。
-
removeImage
从流中移除图像。如果
canRemoveImage(imageIndex)返回false,将抛出UnsupportedOperationException异常。移除可能会或可能不会导致实际文件大小的减小。
默认实现会抛出
IllegalStateException(如果输出为null),否则会抛出UnsupportedOperationException。- 参数:
-
imageIndex- 要移除的图像的索引。 - 抛出:
-
IllegalStateException- 如果未设置输出。 -
UnsupportedOperationException- 如果canRemoveImage(imageIndex)返回false。 -
IndexOutOfBoundsException- 如果imageIndex小于0或大于最大可用索引。 -
IOException- 如果在移除过程中发生I/O错误。
-
canWriteEmpty
如果写入器支持将由未定义像素值和相关元数据和缩略图组成的单个图像的完整图像流写入输出,则返回true。像素值可以通过将来调用replacePixels方法来定义。如果输出是一个ImageOutputStream,则在当前寻址位置之前的现有内容不受影响,也不需要可读或可写。默认实现会抛出
IllegalStateException(如果输出为null),否则会返回false。- 返回:
-
true如果支持具有稍后定义内容的完整图像流的写入。 - 抛出:
-
IllegalStateException- 如果未设置输出。 -
IOException- 如果在查询过程中发生I/O错误。
-
prepareWriteEmpty
public void prepareWriteEmpty(IIOMetadata streamMetadata, ImageTypeSpecifier imageType, int width, int height, IIOMetadata imageMetadata, List<? extends BufferedImage> thumbnails, ImageWriteParam param) throws IOException 开始写入完整图像流,包括一个具有未定义像素值和相关元数据和缩略图的单个图像到输出。像素值将由将来调用replacePixels方法来定义。如果输出是一个ImageOutputStream,则在当前寻址位置之前的现有内容不受影响,也不需要可读或可写。写入过程直到调用
endWriteEmpty为止。在调用prepareWriteEmpty和endWriteEmpty之间可以发生对prepareReplacePixels、replacePixels和endReplacePixels的调用。但是,不能嵌套调用prepareWriteEmpty,并且prepareWriteEmpty和prepareInsertEmpty的调用不能交错进行。如果
canWriteEmpty返回false,将抛出UnsupportedOperationException异常。可以选择提供一个
ImageWriteParam来控制写入过程。如果param为null,将使用默认的写入参数。如果提供的
ImageWriteParam包含此写入器不支持的可选设置值(例如渐进编码或任何特定于格式的设置),它们将被忽略。默认实现会抛出
IllegalStateException(如果输出为null),否则会抛出UnsupportedOperationException。- 参数:
-
streamMetadata- 表示流元数据的IIOMetadata对象,或者null以使用默认值。 -
imageType- 描述图像布局的ImageTypeSpecifier。 -
width- 图像的宽度。 -
height- 图像的高度。 -
imageMetadata- 表示图像元数据的IIOMetadata对象,或者null。 -
thumbnails- 用于此图像的BufferedImage缩略图的List,或者null。 -
param- 一个ImageWriteParam,或者null以使用默认的ImageWriteParam。 - 抛出:
-
IllegalStateException- 如果未设置输出。 -
UnsupportedOperationException- 如果canWriteEmpty返回false。 -
IllegalStateException- 如果之前调用了prepareWriteEmpty而没有相应调用endWriteEmpty。 -
IllegalStateException- 如果之前调用了prepareInsertEmpty而没有相应调用endInsertEmpty。 -
IllegalArgumentException- 如果imageType为null或thumbnails包含null引用或除BufferedImage之外的对象。 -
IllegalArgumentException- 如果宽度或高度小于1。 -
IOException- 如果在写入过程中发生I/O错误。
-
endWriteEmpty
完成之前使用prepareWriteEmpty开始的新图像的写入。如果
canWriteEmpty()返回false,将抛出UnsupportedOperationException异常。默认实现会抛出
IllegalStateException(如果输出为null),否则会抛出UnsupportedOperationException。- 抛出:
-
IllegalStateException- 如果输出未设置。 -
UnsupportedOperationException- 如果canWriteEmpty(imageIndex)返回false。 -
IllegalStateException- 如果之前调用prepareWriteEmpty而没有相应调用endWriteEmpty。 -
IllegalStateException- 如果之前调用prepareInsertEmpty而没有相应调用endInsertEmpty。 -
IllegalStateException- 如果调用prepareReiplacePixels而没有匹配的endReplacePixels。 -
IOException- 写入过程中发生I/O错误。
-
canInsertEmpty
返回true如果写入器支持在给定索引处插入新的空图像。图像的像素值未定义,并且可以使用replacePixels方法逐步指定。索引大于或等于插入索引的现有图像的索引将增加1。可以使用imageIndex的值-1表示比当前最大索引大1的索引。不支持插入空图像的写入器可能会在不对索引进行边界检查的情况下返回
false。如果输出为
null,默认实现会抛出IllegalStateException,否则会返回false而不检查imageIndex的值。- 参数:
-
imageIndex- 要插入图像的索引。 - 返回:
-
true如果可以在给定索引处插入空图像。 - 抛出:
-
IllegalStateException- 如果输出未设置。 -
IndexOutOfBoundsException- 如果写入器通常支持插入空图像,但imageIndex小于-1或大于最大可用索引。 -
IOException- 查询过程中发生I/O错误。
-
prepareInsertEmpty
public void prepareInsertEmpty(int imageIndex, ImageTypeSpecifier imageType, int width, int height, IIOMetadata imageMetadata, List<? extends BufferedImage> thumbnails, ImageWriteParam param) throws IOException 开始将具有未定义像素值的新图像插入到现有图像流中。索引大于imageIndex的现有图像将被保留,并且它们的索引将分别增加1。可以使用imageIndex的值-1表示比先前最大索引大1的索引;也就是说,它将导致图像逻辑上附加到序列的末尾。如果输出是ImageOutputStream,则整个流必须可读且可写。图像内容可以稍后使用
replacePixels方法提供。插入操作直到调用endInsertEmpty才算完成。在调用prepareInsertEmpty和endInsertEmpty之间可以调用prepareReplacePixels、replacePixels和endReplacePixels。但是,不能嵌套调用prepareInsertEmpty,并且不能在prepareWriteEmpty和prepareInsertEmpty之间交替调用。如果
canInsertEmpty(imageIndex)返回false,将抛出UnsupportedOperationException。可以选择提供一个
ImageWriteParam来控制写入过程。如果param为null,将使用默认的写入参数。如果提供的
ImageWriteParam包含此写入器不支持的可选设置值(例如渐进编码或任何特定于格式的设置),它们将被忽略。如果输出为
null,默认实现会抛出IllegalStateException,否则会抛出UnsupportedOperationException。- 参数:
-
imageIndex- 要写入图像的索引。 -
imageType-描述图像布局的ImageTypeSpecifier。 -
width- 图像的宽度。 -
height- 图像的高度。 -
imageMetadata- 表示图像元数据的IIOMetadata对象,或null。 -
thumbnails- 包含此图像的BufferedImage缩略图的List,或null。 -
param- 一个ImageWriteParam,或null以使用默认的ImageWriteParam。 - 抛出:
-
IllegalStateException- 如果输出未设置。 -
UnsupportedOperationException- 如果canInsertEmpty(imageIndex)返回false。 -
IndexOutOfBoundsException- 如果imageIndex小于-1或大于最大可用索引。 -
IllegalStateException- 如果之前调用prepareInsertEmpty而没有相应调用endInsertEmpty。 -
IllegalStateException- 如果之前调用prepareWriteEmpty而没有相应调用endWriteEmpty。 -
IllegalArgumentException- 如果imageType为null或thumbnails包含null引用或不是BufferedImage的对象。 -
IllegalArgumentException- 如果宽度或高度小于1。 -
IOException- 写入过程中发生I/O错误。
-
endInsertEmpty
完成先前调用prepareInsertEmpty开始的新图像的插入。如果输出为
null,默认实现会抛出IllegalStateException,否则会抛出UnsupportedOperationException。- 抛出:
-
IllegalStateException- 如果输出未设置。 -
UnsupportedOperationException- 如果canInsertEmpty(imageIndex)返回false。 -
IllegalStateException- 如果之前调用prepareInsertEmpty而没有相应调用endInsertEmpty。 -
IllegalStateException- 如果之前调用prepareWriteEmpty而没有相应调用endWriteEmpty。 -
IllegalStateException- 如果调用prepareReplacePixels而没有匹配的endReplacePixels。 -
IOException- 写入过程中发生I/O错误。
-
canReplacePixels
返回true如果写入器允许使用replacePixels方法替换给定图像的像素。不支持任何像素替换的写入器可能会在不对索引进行边界检查的情况下返回
false。如果输出为
null,默认实现会抛出IllegalStateException,否则会返回false而不检查imageIndex的值。- 参数:
-
imageIndex- 要替换像素的图像的索引。 - 返回:
-
true如果可以替换给定图像的像素。 - 抛出:
-
IllegalStateException- 如果输出未设置。 -
IndexOutOfBoundsException- 如果写入器通常支持像素替换,但imageIndex小于0或大于最大可用索引。 -
IOException- 查询过程中发生I/O错误。
-
prepareReplacePixels
准备写入器处理一系列对replacePixels方法的调用。受影响的像素区域将针对提供的进行裁剪如果
canReplacePixels返回false,将抛出UnsupportedOperationException。如果输出为
null,默认实现会抛出IllegalStateException,否则会抛出UnsupportedOperationException。- 参数:
-
imageIndex- 要替换其像素的图像的索引。 -
region- 一个将用于裁剪未来像素区域的Rectangle。 - 抛出:
-
IllegalStateException- 如果输出尚未设置。 -
UnsupportedOperationException- 如果canReplacePixels(imageIndex)返回false。 -
IndexOutOfBoundsException- 如果imageIndex小于0或大于最大可用索引。 -
IllegalStateException- 如果之前调用了prepareReplacePixels而没有匹配的endReplacePixels调用(即,不允许嵌套)。 -
IllegalArgumentException- 如果region为null或宽度或高度小于1。 -
IOException- 如果在准备过程中发生I/O错误。
-
replacePixels
用给定图像的一部分替换已存在于输出中的图像的一部分。图像数据必须匹配或可转换为现有图像的图像布局。目标区域在
param参数中指定,并将被裁剪为图像边界和提供给prepareReplacePixels的区域。源的至少一个像素不能被裁剪,否则将抛出异常。可以选择提供
ImageWriteParam以控制写入过程。如果param为null,将使用默认的写入参数。如果提供的
ImageWriteParam包含此写入程序不支持的可选设置值(例如渐进编码或任何特定于格式的设置),它们将被忽略。此方法只能在调用
prepareReplacePixels之后调用,否则将抛出IllegalStateException。默认实现会在输出为
null时抛出IllegalStateException,否则抛出UnsupportedOperationException。- 参数:
-
image- 包含源像素的RenderedImage。 -
param- 一个ImageWriteParam,或null以使用默认的ImageWriteParam。 - 抛出:
-
IllegalStateException- 如果输出尚未设置。 -
UnsupportedOperationException- 如果canReplacePixels(imageIndex)返回false。 -
IllegalStateException- 如果没有之前调用prepareReplacePixels而没有匹配的endReplacePixels调用。 -
IllegalArgumentException- 如果以下任一情况为真:image为null。- 相交区域不包含至少一个像素。
image的布局与现有图像布局不匹配,或者此写入程序无法将其转换为现有图像布局。
-
IOException- 如果在写入过程中发生I/O错误。
-
replacePixels
用给定Raster的一部分替换已存在于输出中的图像的一部分。图像数据必须匹配或可转换为现有图像的图像布局。可以选择提供
ImageWriteParam以控制写入过程。如果param为null,将使用默认的写入参数。目标区域在
param参数中指定,并将被裁剪为图像边界和提供给prepareReplacePixels的区域。源的至少一个像素不能被裁剪,否则将抛出异常。如果提供的
ImageWriteParam包含此写入程序不支持的可选设置值(例如渐进编码或任何特定于格式的设置),它们将被忽略。此方法只能在调用
prepareReplacePixels之后调用,否则将抛出IllegalStateException。默认实现会在输出为
null时抛出IllegalStateException,否则抛出UnsupportedOperationException。- 参数:
-
raster- 包含源像素的Raster。 -
param- 一个ImageWriteParam,或null以使用默认的ImageWriteParam。 - 抛出:
-
IllegalStateException- 如果输出尚未设置。 -
UnsupportedOperationException- 如果canReplacePixels(imageIndex)返回false。 -
IllegalStateException- 如果没有之前调用prepareReplacePixels而没有匹配的endReplacePixels调用。 -
UnsupportedOperationException- 如果canWriteRasters返回false。 -
IllegalArgumentException- 如果以下任一情况为真:raster为null。- 相交区域不包含至少一个像素。
raster的布局与现有图像布局不匹配,或者此写入程序无法将其转换为现有图像布局。
-
IOException- 如果在写入过程中发生I/O错误。
-
endReplacePixels
终止对replacePixels的一系列调用。如果
canReplacePixels返回false,将抛出UnsupportedOperationException。默认实现会在输出为
null时抛出IllegalStateException,否则抛出UnsupportedOperationException。- 抛出:
-
IllegalStateException- 如果输出尚未设置。 -
UnsupportedOperationException- 如果canReplacePixels(imageIndex)返回false。 -
IllegalStateException- 如果没有之前调用prepareReplacePixels而没有匹配的endReplacePixels调用。 -
IOException- 如果在写入过程中发生I/O错误。
-
abort
public void abort()请求中止任何当前写入操作。中止后的输出内容将是未定义的。写入程序应在每次写入操作开始时调用
clearAbortRequest,并在写入过程中定期轮询abortRequested的值。 -
abortRequested
protected boolean abortRequested()如果自写入程序实例化以来或调用clearAbortRequest以来已发出中止当前写入操作的请求,则返回true。- 返回:
-
如果应中止当前写入操作,则返回
true。 - 参见:
-
clearAbortRequest
protected void clearAbortRequest()清除任何先前的中止请求。调用此方法后,abortRequested将返回false。- 参见:
-
addIIOWriteWarningListener
将一个IIOWriteWarningListener添加到已注册的警告侦听器列表中。如果listener为null,则不会抛出异常,也不会执行任何操作。发送到给定侦听器的消息将在可能的情况下本地化,以匹配当前的Locale。如果未设置Locale,则警告消息可能会根据写入程序的看法进行本地化。- 参数:
-
listener- 要注册的IIOWriteWarningListener。 - 参见:
-
removeIIOWriteWarningListener
从已注册的警告侦听器列表中删除一个IIOWriteWarningListener。如果侦听器先前未注册,或者listener为null,则不会抛出异常,也不会执行任何操作。- 参数:
-
listener- 要注销的IIOWriteWarningListener。 - 参见:
-
removeAllIIOWriteWarningListeners
public void removeAllIIOWriteWarningListeners()删除当前所有已注册的IIOWriteWarningListener对象。默认实现将
warningListeners和warningLocales实例变量设置为null。 -
addIIOWriteProgressListener
将一个IIOWriteProgressListener添加到已注册的进度监听器列表中。如果listener为null,则不会抛出异常,也不会执行任何操作。- 参数:
-
listener- 要注册的IIOWriteProgressListener。 - 参见:
-
removeIIOWriteProgressListener
从已注册的进度监听器列表中移除一个IIOWriteProgressListener。如果监听器之前未注册,或者listener为null,则不会抛出异常,也不会执行任何操作。- 参数:
-
listener- 要注销的IIOWriteProgressListener。 - 参见:
-
removeAllIIOWriteProgressListeners
public void removeAllIIOWriteProgressListeners()移除当前所有已注册的IIOWriteProgressListener对象。默认实现将
progressListeners实例变量设置为null。 -
processImageStarted
protected void processImageStarted(int imageIndex) 通过调用它们的imageStarted方法,向所有已注册的IIOWriteProgressListener广播图像写入的开始。子类可以使用此方法作为一种便利。- 参数:
-
imageIndex- 即将被写入的图像的索引。
-
processImageProgress
protected void processImageProgress(float percentageDone) 通过调用它们的imageProgress方法,向所有已注册的IIOWriteProgressListener广播图像完成的当前百分比。子类可以使用此方法作为一种便利。- 参数:
-
percentageDone- 当前完成百分比,作为float。
-
processImageComplete
protected void processImageComplete()通过调用它们的imageComplete方法,向所有已注册的IIOWriteProgressListener广播图像写入的完成。子类可以使用此方法作为一种便利。 -
processThumbnailStarted
protected void processThumbnailStarted(int imageIndex, int thumbnailIndex) 通过调用它们的thumbnailStarted方法,向所有已注册的IIOWriteProgressListener广播缩略图写入的开始。子类可以使用此方法作为一种便利。- 参数:
-
imageIndex- 与缩略图关联的图像的索引。 -
thumbnailIndex- 缩略图的索引。
-
processThumbnailProgress
protected void processThumbnailProgress(float percentageDone) 通过调用它们的thumbnailProgress方法,向所有已注册的IIOWriteProgressListener广播缩略图完成的当前百分比。子类可以使用此方法作为一种便利。- 参数:
-
percentageDone- 当前完成百分比,作为float。
-
processThumbnailComplete
protected void processThumbnailComplete()通过调用它们的thumbnailComplete方法,向所有已注册的IIOWriteProgressListener广播缩略图写入的完成。子类可以使用此方法作为一种便利。 -
processWriteAborted
protected void processWriteAborted()通过调用它们的writeAborted方法,向所有已注册的IIOWriteProgressListener广播写入操作已中止。子类可以使用此方法作为一种便利。 -
processWarningOccurred
通过调用它们的warningOccurred方法,向所有已注册的IIOWriteWarningListener广播警告消息。子类可以使用此方法作为一种便利。- 参数:
-
imageIndex- 发生警告的图像的索引。 -
warning- 警告消息。 - 抛出:
-
IllegalArgumentException- 如果warning为null。
-
processWarningOccurred
通过从ResourceBundle中获取的字符串调用它们的warningOccurred方法,向所有已注册的IIOWriteWarningListener广播本地化的警告消息。子类可以使用此方法作为一种便利。- 参数:
-
imageIndex- 发生警告的图像的索引。 -
baseName- 包含本地化警告消息的一组ResourceBundle的基本名称。 -
keyword- 在ResourceBundle集合中用于索引警告消息的关键字。 - 抛出:
-
IllegalArgumentException- 如果baseName为null。 -
IllegalArgumentException- 如果keyword为null。 -
IllegalArgumentException- 如果无法找到适当的ResourceBundle。 -
IllegalArgumentException- 如果在定位的ResourceBundle中找不到命名资源。 -
IllegalArgumentException- 如果从ResourceBundle中检索的对象不是String。
-
reset
public void reset()将ImageWriter恢复到初始状态。默认实现调用
setOutput(null)、setLocale(null)、removeAllIIOWriteWarningListeners()、removeAllIIOWriteProgressListeners()和clearAbortRequest。 -
dispose
public void dispose()允许释放此对象持有的任何资源。在调用此方法后继续调用任何其他方法(除了finalize)的结果是未定义的。当应用程序知道不再需要使用此
ImageWriter时,调用此方法非常重要。否则,写入器可能会无限期地保留资源。在超类中此方法的默认实现不执行任何操作。子类实现应确保释放所有资源,特别是本机资源。
-