JavaTM 2 Platform
Standard Ed. 6

javax.imageio
類別 ImageReader

java.lang.Object
  繼承者 javax.imageio.ImageReader

public abstract class ImageReader
extends Object

用來解析和解碼圖像的抽象父級類別。在 Java Image I/O 框架的上下文中讀入圖像的類別必須創建此類別的子類別。

ImageReader 物件通常由特定格式的服務提供者介面 (SPI) 類別實例化。服務提供者類別(例如 ImageReaderSpi 的實例)向 IIORegistry 註冊,後者使用前者進行格式識別和表示可用格式 reader 和 writer。

在設置輸入源時(使用 setInput 方法),可以將它標記為“只向前搜尋”。此設置意味著包含在輸入源中的圖像將只按順序讀取,可能允許 reader 避免快取記憶體包含與以前已經讀取的圖像關聯的資料的那些輸入部分。

另請參見:
ImageWriter, IIORegistry, ImageReaderSpi

欄位摘要
protected  Locale[] availableLocales
          可以用來本地化警告訊息的 Locale 組成的陣列,如果不支持本地化,則為 null
protected  boolean ignoreMetadata
          如果當前輸入源已經被 setInput 標記為允許忽略元資料,則為 true
protected  Object input
          由 setInput 設置並由 getInput 獲取的 ImageInputStream 或其他 Object
protected  Locale locale
          用於本地化的當前 Locale,如果沒有設置,則為 null
protected  int minIndex
          用來讀取的最小有效索引,最初為 0。
protected  ImageReaderSpi originatingProvider
          實例化此物件的 ImageReaderSpi,如果其身份未知或不存在,則為 null
protected  List<IIOReadProgressListener> progressListeners
          當前已註冊 IIOReadProgressListener 組成的 List,預設情況下初始化為 null,它與空 List 同義。
protected  boolean seekForwardOnly
          如果當前輸入源已經被 setInput 標記為允許只向前搜尋,則為 true
protected  List<IIOReadUpdateListener> updateListeners
          當前已註冊 IIOReadUpdateListener 組成的 List,預設情況下初始化為 null,它與空 List 同義。
protected  List<IIOReadWarningListener> warningListeners
          當前已註冊 IIOReadWarningListener 組成的 List,預設情況下初始化為 null,它與空 List 同義。
protected  List<Locale> warningLocales
          與每個當前已註冊 IIOReadWarningListener 關聯的 Locale 組成的 List,預設情況下初始化為 null,它與空 List 同義。
 
建構子摘要
protected ImageReader(ImageReaderSpi originatingProvider)
          建構一個 ImageReader,並將其 originatingProvider 欄位設置為所提供的值。
 
方法摘要
 void abort()
          請求中止當前所有讀取操作。
protected  boolean abortRequested()
          如果從實例化 reader 或調用 clearAbortRequest 時起,已經請求了中止當前讀取操作,則返回 true
 void addIIOReadProgressListener(IIOReadProgressListener listener)
          將 IIOReadProgressListener 添加到已註冊的進度偵聽器列表中。
 void addIIOReadUpdateListener(IIOReadUpdateListener listener)
          將 IIOReadUpdateListener 添加到已註冊的更新偵聽器列表中。
 void addIIOReadWarningListener(IIOReadWarningListener listener)
          將 IIOReadWarningListener 添加到已註冊的警告偵聽器的列表中。
 boolean canReadRaster()
          如果此外掛程式支持只讀取像素資料的 Raster,則返回 true
protected static void checkReadParamBandSettings(ImageReadParam param, int numSrcBands, int numDstBands)
          reader 可用來測試 ImageReadParam 的源和目標 band 設置的有效性的實用方法。
protected  void clearAbortRequest()
          清除任何以前的中止請求。
protected static void computeRegions(ImageReadParam param, int srcWidth, int srcHeight, BufferedImage image, Rectangle srcRegion, Rectangle destRegion)
          計算感興趣的源區域和目標區域,將源圖像的寬度和高度、可選目標圖像和可選 ImageReadParam 都考慮在內。
 void dispose()
          允許釋放此物件佔用的所有資源。
 float getAspectRatio(int imageIndex)
          以 float 的形式返回給定圖像的高寬比(即寬度除以高度)。
 Locale[] getAvailableLocales()
          返回可用來初始化警告偵聽器和壓縮設置值的 Locale 所組成的陣列。
 ImageReadParam getDefaultReadParam()
          返回一個適合此格式的預設 ImageReadParam 物件。
protected static BufferedImage getDestination(ImageReadParam param, Iterator<ImageTypeSpecifier> imageTypes, int width, int height)
          返回應該在其中寫入解碼的像素資料的 BufferedImage
 String getFormatName()
          返回一個標識輸入源格式的 String
abstract  int getHeight(int imageIndex)
          返回輸入源中的給定圖像的高度,以像素為單位。
abstract  IIOMetadata getImageMetadata(int imageIndex)
          返回包含與給定圖像關聯的元資料的 IIOMetadata 物件,如果 reader 不支持讀取元資料、被設置為忽略元資料,或者沒有元資料可用,則返回 null
 IIOMetadata getImageMetadata(int imageIndex, String formatName, Set<String> nodeNames)
          返回表示與給定圖像關聯的元資料的 IIOMetadata 物件,如果 reader 不支持讀取元資料或者沒有元資料可用,則返回 null
abstract  Iterator<ImageTypeSpecifier> getImageTypes(int imageIndex)
          以 ImageTypeSpecifier 形式返回包含可能的圖像型別的 Iterator,給定圖像可能被解碼成這些型別。
 Object getInput()
          返回以前設置為輸入源的 ImageInputStream 或其他 Object
 Locale getLocale()
          返回當前設置的 Locale,如果沒有設置 Locale,則返回 null
 int getMinIndex()
          返回用於讀取圖像、縮略圖或圖像元資料的最低有效索引。
abstract  int getNumImages(boolean allowSearch)
          返回當前輸入源中可用的圖像數,不包括縮略圖。
 int getNumThumbnails(int imageIndex)
          返回與給定圖像關聯的縮略圖預覽圖像的數量。
 ImageReaderSpi getOriginatingProvider()
          返回傳入建構子的 ImageReaderSpi
 ImageTypeSpecifier getRawImageType(int imageIndex)
          返回一個 ImageTypeSpecifier,指示最能代表圖像“原始”內部格式的 SampleModelColorModel
protected static Rectangle getSourceRegion(ImageReadParam param, int srcWidth, int srcHeight)
          reader 可用來計算應該讀取的源圖像區域的一個實用方法,計算時考慮任何源區域,並在所提供的 ImageReadParam 中對偏移量設置進行二次取樣。
abstract  IIOMetadata getStreamMetadata()
          返回一個 IIOMetadata 物件,它表示作為一個整體與輸入源關聯的元資料(即不與任何特定圖像關聯);如果 reader 不支持讀取元資料、被設置為忽略元資料,或者沒有元資料可用,則返回 null
 IIOMetadata getStreamMetadata(String formatName, Set<String> nodeNames)
          返回一個 IIOMetadata 物件,它表示作為一個整體與輸入源關聯的元資料(即不與任何特定圖像關聯)。
 int getThumbnailHeight(int imageIndex, int thumbnailIndex)
          返回通過索引 thumbnailIndex 指定的縮略圖預覽圖像的高度,其與通過索引 ImageIndex 指定的圖像關聯。
 int getThumbnailWidth(int imageIndex, int thumbnailIndex)
          返回通過索引 thumbnailIndex 指定的縮略圖預覽圖像的寬度,其與通過索引 ImageIndex 指定的圖像關聯。
 int getTileGridXOffset(int imageIndex)
          返回給定圖像中 tile (0, 0) 的左上角的 X 坐標。
 int getTileGridYOffset(int imageIndex)
          返回給定圖像中 tile (0, 0) 的左上角的 Y 坐標。
 int getTileHeight(int imageIndex)
          返回給定圖像中 tile 的高度。
 int getTileWidth(int imageIndex)
          返回給定圖像中 tile 的寬度。
abstract  int getWidth(int imageIndex)
          返回輸入源中的給定圖像的寬度,以像素為單位。
 boolean hasThumbnails(int imageIndex)
          如果給定圖像具有與之關聯的縮略圖預覽圖像,則返回 true
 boolean isIgnoringMetadata()
          如果已經通過傳遞 true 作為 setInput 方法的 ignoreMetadata 參數將當前輸入源標記為允許忽略元資料,則返回 true
 boolean isImageTiled(int imageIndex)
          如果圖像被組織成 tile(即等大小的非重疊矩形),則返回 true
 boolean isRandomAccessEasy(int imageIndex)
          如果給定圖像的存儲格式不會給像素的隨機存取帶來內在妨礙,則返回 true
 boolean isSeekForwardOnly()
          如果已經通過傳遞 true 作為 setInput 方法的 seekForwardOnly 參數將當前輸入源標記為只向前搜尋,則返回 true
protected  void processImageComplete()
          通過調用所有已註冊 IIOReadProgressListenerimageComplete 方法向其廣播圖像讀取的完成。
protected  void processImageProgress(float percentageDone)
          通過調用所有已註冊 IIOReadProgressListenerimageProgress 方法向其廣播圖像完成的當前百分比。
protected  void processImageStarted(int imageIndex)
          通過調用所有已註冊 IIOReadProgressListenerimageStarted 方法向其廣播圖像讀取起始處。
protected  void processImageUpdate(BufferedImage theImage, int minX, int minY, int width, int height, int periodX, int periodY, int[] bands)
          通過調用所有已註冊 IIOReadUpdateListenerimageUpdate 方法向其廣播樣本集合的更新。
protected  void processPassComplete(BufferedImage theImage)
          通過調用所有已註冊 IIOReadUpdateListenerpassComplete 方法向其廣播逐步傳遞的結束。
protected  void processPassStarted(BufferedImage theImage, int pass, int minPass, int maxPass, int minX, int minY, int periodX, int periodY, int[] bands)
          通過調用所有已註冊 IIOReadUpdateListenerpassStarted 方法向其廣播逐步傳遞的開始。
protected  void processReadAborted()
          通過調用所有已註冊 IIOReadProgressListenerreadAborted 方法向其廣播讀取已經中止。
protected  void processSequenceComplete()
          通過調用所有已註冊 IIOReadProgressListenersequenceComplete 方法向其廣播圖像讀取序列的完成。
protected  void processSequenceStarted(int minIndex)
          通過調用所有已註冊 IIOReadProgressListenersequenceStarted 方法向其廣播圖像讀取序列的起始處。
protected  void processThumbnailComplete()
          通過調用所有已註冊 IIOReadProgressListenerthumbnailComplete 方法向其廣播縮略圖讀取的完成。
protected  void processThumbnailPassComplete(BufferedImage theThumbnail)
          通過調用所有已註冊 IIOReadUpdateListenerthumbnailPassComplete 方法向其廣播縮略圖逐步傳遞的結束。
protected  void processThumbnailPassStarted(BufferedImage theThumbnail, int pass, int minPass, int maxPass, int minX, int minY, int periodX, int periodY, int[] bands)
          通過調用所有已註冊 IIOReadUpdateListenerthumbnailPassStarted 方法向其廣播縮略圖逐步傳遞的開始。
protected  void processThumbnailProgress(float percentageDone)
          通過調用所有已註冊 IIOReadProgressListenerthumbnailProgress 方法向其廣播縮略圖完成的當前百分比。
protected  void processThumbnailStarted(int imageIndex, int thumbnailIndex)
          通過調用所有已註冊 IIOReadProgressListenerthumbnailStarted 方法向其廣播縮略圖讀取的起始處。
protected  void processThumbnailUpdate(BufferedImage theThumbnail, int minX, int minY, int width, int height, int periodX, int periodY, int[] bands)
          通過調用所有已註冊 IIOReadUpdateListenerthumbnailUpdate 方法向其廣播縮略圖圖像中樣本集合的更新。
protected  void processWarningOccurred(String warning)
          通過調用所有已註冊 IIOReadWarningListenerwarningOccurred 方法向其廣播警告訊息。
protected  void processWarningOccurred(String baseName, String keyword)
          通過使用取自 ResourceBundle 的字元串調用所有已註冊 IIOReadWarningListenerwarningOccurred 方法向其廣播本地化警告訊息。
 BufferedImage read(int imageIndex)
          使用預設 ImageReadParam 讀取通過索引 imageIndex 指定的圖像,並將其作為一個完整的 BufferedImage 返回。
abstract  BufferedImage read(int imageIndex, ImageReadParam param)
          使用所提供的 ImageReadParam 讀取通過索引 imageIndex 指定的物件,並將它作為一個完整的 BufferedImage 返回。
 IIOImage readAll(int imageIndex, ImageReadParam param)
          使用所提供的 ImageReadParam 讀取通過索引 imageIndex 指定的圖像,並返回包含圖像、縮略圖和相關圖像元資料的 IIOImage
 Iterator<IIOImage> readAll(Iterator<? extends ImageReadParam> params)
          以 IIOImage 物件形式返回包含輸入源中所有圖像、縮略圖和元資料的 Iterator,從 getMinIndex 給定的索引開始。
 RenderedImage readAsRenderedImage(int imageIndex, ImageReadParam param)
          返回一個 RenderedImage 物件,該物件包含通過索引 imageIndex 指定的圖像的內容。
 boolean readerSupportsThumbnails()
          如果此 reader 所理解的圖像格式支持與之關聯的縮略圖預覽圖像,則返回 true
 Raster readRaster(int imageIndex, ImageReadParam param)
          返回包含圖像串流中原始像素資料的新 Raster 物件,不應用任何顏色轉換。
 BufferedImage readThumbnail(int imageIndex, int thumbnailIndex)
          以 BufferedImage 形式返回通過索引 thumbnailIndex 指定的縮略圖預覽圖像,其與通過索引 ImageIndex 指定的圖像關聯。
 BufferedImage readTile(int imageIndex, int tileX, int tileY)
          讀取由 tileXtileY 參數指示的 tile,並以 BufferedImage 形式返回。
 Raster readTileRaster(int imageIndex, int tileX, int tileY)
          返回包含 tile 中的原始像素資料的新 Raster 物件,不應用任何顏色轉換。
 void removeAllIIOReadProgressListeners()
          移除所有當前已註冊的 IIOReadProgressListener 物件。
 void removeAllIIOReadUpdateListeners()
          移除所有當前已註冊的 IIOReadUpdateListener 物件。
 void removeAllIIOReadWarningListeners()
          移除所有當前已註冊的 IIOReadWarningListener 物件。
 void removeIIOReadProgressListener(IIOReadProgressListener listener)
          從已註冊的進度偵聽器列表中移除 IIOReadProgressListener
 void removeIIOReadUpdateListener(IIOReadUpdateListener listener)
          從已註冊的更新偵聽器列表中移除 IIOReadUpdateListener
 void removeIIOReadWarningListener(IIOReadWarningListener listener)
          從已註冊的錯誤偵聽器列表中移除 IIOReadWarningListener
 void reset()
          將 ImageReader 恢復到其初始狀態。
 void setInput(Object input)
          設置用於給定的 ImageInputStream 或其他 Object 的輸入源。
 void setInput(Object input, boolean seekForwardOnly)
          設置用於給定的 ImageInputStream 或其他 Object 的輸入源。
 void setInput(Object input, boolean seekForwardOnly, boolean ignoreMetadata)
          設置用於給定的 ImageInputStream 或其他 Object 的輸入源。
 void setLocale(Locale locale)
          將此 ImageReader 的當前 Locale 設置為給定值。
 
從類別 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

欄位詳細資訊

originatingProvider

protected ImageReaderSpi originatingProvider
實例化此物件的 ImageReaderSpi,如果其身份未知或不存在,則為 null。預設情況下初始化為 null


input

protected Object input
setInput 設置並由 getInput 獲取的 ImageInputStream 或其他 Object。預設情況下初始化為 null


seekForwardOnly

protected boolean seekForwardOnly
如果當前輸入源已經被 setInput 標記為允許只向前搜尋,則為 true。預設情況下,該值為 false

另請參見:
minIndex, setInput(java.lang.Object, boolean, boolean)

ignoreMetadata

protected boolean ignoreMetadata
如果當前輸入源已經被 setInput 標記為允許忽略元資料,則為 true。預設情況下,該值為 false

另請參見:
setInput(java.lang.Object, boolean, boolean)

minIndex

protected int minIndex
用來讀取的最小有效索引,最初為 0。如果 seekForwardOnlytrue ,各種方法在試圖存取與擁有更低索引的圖像關聯的資料時將拋出 IndexOutOfBoundsException

另請參見:
seekForwardOnly, setInput(java.lang.Object, boolean, boolean)

availableLocales

protected Locale[] availableLocales
可以用來本地化警告訊息的 Locale 組成的陣列,如果不支持本地化,則為 null


locale

protected Locale locale
用於本地化的當前 Locale,如果沒有設置,則為 null


warningListeners

protected List<IIOReadWarningListener> warningListeners
當前已註冊 IIOReadWarningListener 組成的 List,預設情況下初始化為 null,它與空 List 同義。


warningLocales

protected List<Locale> warningLocales
與每個當前已註冊 IIOReadWarningListener 關聯的 Locale 組成的 List,預設情況下初始化為 null,它與空 List 同義。


progressListeners

protected List<IIOReadProgressListener> progressListeners
當前已註冊 IIOReadProgressListener 組成的 List,預設情況下初始化為 null,它與空 List 同義。


updateListeners

protected List<IIOReadUpdateListener> updateListeners
當前已註冊 IIOReadUpdateListener 組成的 List,預設情況下初始化為 null,它與空 List 同義。

建構子詳細資訊

ImageReader

protected ImageReader(ImageReaderSpi originatingProvider)
建構一個 ImageReader,並將其 originatingProvider 欄位設置為所提供的值。

利用擴展的子類別應該為提供具有簽章 (ImageReaderSpi, Object) 的建構子來獲取擴展物件。如果擴展物件不合適,則將拋出 IllegalArgumentException

參數:
originatingProvider - 調用此建構子的 ImageReaderSpi,或者為 null
方法詳細資訊

getFormatName

public String getFormatName()
                     throws IOException
返回一個標識輸入源格式的 String

預設實作返回 originatingProvider.getFormatNames()[0]。沒有原始服務提供者的實作或者希望使用不同命名策略的實作應該覆寫此方法。

返回:
String 形式的格式名稱。
拋出:
IOException - 如果從輸入源中讀取資訊時發生錯誤。

getOriginatingProvider

public ImageReaderSpi getOriginatingProvider()
返回傳入建構子的 ImageReaderSpi。注意,此值可能為 null

返回:
一個 ImageReaderSpinull
另請參見:
ImageReaderSpi

setInput

public void setInput(Object input,
                     boolean seekForwardOnly,
                     boolean ignoreMetadata)
設置用於給定的 ImageInputStream 或其他 Object 的輸入源。輸入源必須在使用任何查詢或讀取方法之前設置。如果 inputnull,則將移除所有當前設置的輸入源。無論是哪種情況,minIndex 的值都將被初始化為 0。

seekForwardOnly 參數控制在讀取每個圖像(或者縮略圖或圖像元資料)時,由 getMinIndex 返回的值是否增加。如果 seekForwardOnly 為 true,則在 index < this.minIndex 的情況下調用 read(index) 將拋出 IndexOutOfBoundsException;否則 minIndex 的值將被設置為 index。如果 seekForwardOnlyfalse,則 minIndex 的值將仍然為 0,不考慮任何讀取操作。

如果將 ignoreMetadata 參數設置為 true,則允許 reader 忽略讀取操作期間遇到的任何元資料。後續調用 getStreamMetadatagetImageMetadata 方法可能返回 null,從 readAll 返回的 IIOImagegetMetadata 方法可能返回 null。設置此參數可允許 reader 更有效地工作。reader 可以選擇忽略此設置值,正常地返回元資料。

子類別應該注意移除任何基於以前的串流快取記憶體的資訊,比如標題資訊或部分解碼的圖像資料。

直接與捕獲設備或圖像協議交互的 reader 應該使用一般的 Object,而不是 ImageInputStream。合法類別的集合由 reader 的服務提供者的 getInputTypes 方法公開。大多數 reader 將返回一個只包含 ImageInputStream.class 的單元素陣列,指示其只接受 ImageInputStream

預設實作根據 originatingProvider.getInputTypes() 返回的列表檢查 input 參數,如果該參數不是列表中某個類別的實例,則操作失敗。如果將原始提供者設置為 null,則只在 input 是一個 ImageInputStream 時接受輸入。

參數:
input - 將來解碼時用到的 ImageInputStream 或其他 Object
seekForwardOnly - 如果為 true,則只能按升序從此輸入源中讀取圖像和元資料。
ignoreMetadata - 如果為 true,則可以在讀取期間忽略元資料。
拋出:
IllegalArgumentException - 如果 input 不是原始服務提供者的 getInputTypes 方法返回的某個類別的實例,或者不是一個 ImageInputStream
另請參見:
ImageInputStream, getInput(), ImageReaderSpi.getInputTypes()

setInput

public void setInput(Object input,
                     boolean seekForwardOnly)
設置用於給定的 ImageInputStream 或其他 Object 的輸入源。輸入源必須在使用任何查詢或讀取方法之前設置。如果 inputnull,則將移除所有當前設置的輸入源。無論是哪種情況,minIndex 的值都將被初始化為 0。

seekForwardOnly 參數控制在讀取每個圖像(或者縮略圖或圖像元資料)時,由 getMinIndex 返回的值是否增加。如果 seekForwardOnly 為 true,則在 index < this.minIndex 的情況下調用 read(index) 將拋出 IndexOutOfBoundsException;否則 minIndex 的值將被設置為 index。如果 seekForwardOnlyfalse,則 minIndex 的值將仍然為 0,不考慮任何讀取操作。

此方法等效於 setInput(input, seekForwardOnly, false)

參數:
input - 將來解碼時用到的 ImageInputStream 或其他 Object
seekForwardOnly - 如果為 true,則只能按升序從此輸入源中讀取圖像和元資料。
拋出:
IllegalArgumentException - 如果 input 不是原始服務提供者的 getInputTypes 方法返回的某個類別的實例,或者不是一個 ImageInputStream
另請參見:
getInput()

setInput

public void setInput(Object input)
設置用於給定的 ImageInputStream 或其他 Object 的輸入源。輸入源必須在使用任何查詢或讀取方法之前設置。如果 inputnull,則將移除所有當前設置的輸入源。無論是哪種情況,minIndex 的值都將被初始化為 0。

此方法等效於 setInput(input, false, false)

參數:
input - 將來解碼時用到的 ImageInputStream 或其他 Object
拋出:
IllegalArgumentException - 如果 input 不是原始服務提供者的 getInputTypes 方法返回的某個類別的實例,或者不是一個 ImageInputStream
另請參見:
getInput()

getInput

public Object getInput()
返回以前設置為輸入源的 ImageInputStream 或其他 Object。如果沒有設置輸入源,則返回 null

返回:
將來解碼時用到的 Object;或者 null
另請參見:
ImageInputStream, setInput(java.lang.Object, boolean, boolean)

isSeekForwardOnly

public boolean isSeekForwardOnly()
如果已經通過傳遞 true 作為 setInput 方法的 seekForwardOnly 參數將當前輸入源標記為只向前搜尋,則返回 true

返回:
如果輸入源是只向前搜尋的,則返回 true
另請參見:
setInput(java.lang.Object, boolean, boolean)

isIgnoringMetadata

public boolean isIgnoringMetadata()
如果已經通過傳遞 true 作為 setInput 方法的 ignoreMetadata 參數將當前輸入源標記為允許忽略元資料,則返回 true

返回:
如果可以忽略元資料,則返回 true
另請參見:
setInput(java.lang.Object, boolean, boolean)

getMinIndex

public int getMinIndex()
返回用於讀取圖像、縮略圖或圖像元資料的最低有效索引。如果 seekForwardOnly()false,此值通常仍然為 0,指示可能進行隨機存取。否則,它將包含最近一次存取的索引值,並單調遞增。

返回:
可讀取的最小合法索引。

getAvailableLocales

public Locale[] getAvailableLocales()
返回可用來初始化警告偵聽器和壓縮設置值的 Locale 所組成的陣列。返回 null 值指示不支持本地化。

如果 availableLocales 實例變數是非 null 的,則預設實作返回該變數的副本,否則返回 null

返回:
可以用作 setLocale 的參數的 Locale 所組成的陣列,或者返回 null

setLocale

public void setLocale(Locale locale)
將此 ImageReader 的當前 Locale 設置為給定值。值為 null 則移除所有以前的設置值,並指示 reader 應該根據需要對其進行本地化。

參數:
locale - 所需的 Locale,或者為 null
拋出:
IllegalArgumentException - 如果 locale 為非 null,但它不是 getAvailableLocales 返回的值之一。
另請參見:
getLocale()

getLocale

public Locale getLocale()
返回當前設置的 Locale,如果沒有設置 Locale,則返回 null

返回:
當前 Localenull
另請參見:
setLocale(java.util.Locale)

getNumImages

public abstract int getNumImages(boolean allowSearch)
                          throws IOException
返回當前輸入源中可用的圖像數,不包括縮略圖。

注意,一些圖像格式(比如動畫 GIF)並不指定串流中存在多少圖像。因此,確定圖像數就需要掃瞄整個串流,並且可能需要記憶體用來緩衝。如果圖像是按順序處理的,則可能更有效的方法是:使用遞增的索引來調用 read,直到拋出 IndexOutOfBoundsException 指示不再有圖像可用。可以將 allowSearch 參數設置為 false,指示不需要進行徹底搜尋;返回值為 -1 則指示搜尋是必要的。如果已在 seekForwardOnly 設置為 true 的情況下指定輸入,則此方法在 allowSearch 被設置為 true 時將拋出 IllegalStateException

參數:
allowSearch - 如果為 true,則將返回真實的圖像數,即使需要進行搜尋。如果該參數為 false,則 reader 返回 -1,不執行搜尋。
返回:
int 形式的圖像數,如果 allowSearchfalse,則返回 -1,並且將需要搜尋。
拋出:
IllegalStateException - 如果沒有設置輸入源,或者已在 seekForwardOnly 設置為 true 的情況下指定了輸入。
IOException - 如果從輸入源中讀取資訊時發生錯誤。
另請參見:
setInput(java.lang.Object, boolean, boolean)

getWidth

public abstract int getWidth(int imageIndex)
                      throws IOException
返回輸入源中的給定圖像的寬度,以像素為單位。

如果可以將圖像呈現為使用者指定大小,則此方法將返回預設寬度。

參數:
imageIndex - 要查詢的圖像的索引。
返回:
int 形式的圖像寬度。
拋出:
IllegalStateException - 如果尚未設置輸入源。
IndexOutOfBoundsException - 如果所提供的索引超出範圍。
IOException - 如果從輸入源中讀取寬度資訊時發生錯誤。

getHeight

public abstract int getHeight(int imageIndex)
                       throws IOException
返回輸入源中的給定圖像的高度,以像素為單位。

如果可以將圖像呈現為使用者指定大小,則此方法將返回預設高度。

參數:
imageIndex - 要查詢的圖像的索引。
返回:
int 形式的圖像高度。
拋出:
IllegalStateException - 如果尚未設置輸入源。
IndexOutOfBoundsException - 如果所提供的索引超出範圍。
IOException - 如果從輸入源中讀取高度資訊時發生錯誤。

isRandomAccessEasy

public boolean isRandomAccessEasy(int imageIndex)
                           throws IOException
如果給定圖像的存儲格式不會給像素的隨機存取帶來內在妨礙,則返回 true。對於大多數壓縮格式(比如 JPEG),此方法應該返回 false,因為除了感興趣的區域以外,可能還需要對圖像的絕大部分進行解碼。

對於希望更加有效的程序而言,這只是一個提示。所有 reader 必須能夠讀取在 ImageReadParam 中指定的任意區域。

注意,從此方法返回 false 的格式可能仍然允許進行平鋪(例如,JPEG 格式的 Restart Marker),隨機存取對於 tile 可能相當有效。參見 isImageTiled

對於保證所有圖像都支持輕鬆隨機存取或者都不支持輕鬆隨機存取的 reader,分別返回 truefalse,而不必存取任何圖像資料。在這種情況下,即使輸入源沒有設置或者圖像索引超出範圍,也未必拋出異常。

預設實作返回 false

參數:
imageIndex - 要查詢的圖像的索引。
返回:
如果讀取給定圖像的感興趣區域可能是有效的,則返回 true
拋出:
IllegalStateException - 如果需要輸入源來確定返回值,但沒有設置輸入源。
IndexOutOfBoundsException - 如果必須存取某一圖像來確定返回值,但所提供的索引超出範圍。
IOException - 如果在讀取過程中發生錯誤。

getAspectRatio

public float getAspectRatio(int imageIndex)
                     throws IOException
float 的形式返回給定圖像的高寬比(即寬度除以高度)。對於本來就可以調整大小的圖像,此方法提供了一個在已知所需高度的情況下確定適當寬度的方法,反之亦然。對於不可調整大小的圖像,則使用真實寬度和高度。

預設實作只是返回 (float)getWidth(imageIndex)/getHeight(imageIndex)

參數:
imageIndex - 要查詢的圖像的索引。
返回:
指示給定圖像高寬比的 float 值。
拋出:
IllegalStateException - 如果尚未設置輸入源。
IndexOutOfBoundsException - 如果所提供的索引超出範圍。
IOException - 如果在讀取過程中發生錯誤。

getRawImageType

public ImageTypeSpecifier getRawImageType(int imageIndex)
                                   throws IOException
返回一個 ImageTypeSpecifier,指示最能代表圖像“原始”內部格式的 SampleModelColorModel。例如,對於 JPEG 圖像,原始型別可能有一個 YCbCr 顏色空間,即使該圖像在顯示之前會按照慣例被轉換為一個 RGB 顏色空間。返回值還應該套件含在 getImageTypes 返回的值所組成的列表中。

預設實作只返回 getImageType 所提供列表中的第一項。

參數:
imageIndex - 要查詢的圖像的索引。
返回:
一個 ImageTypeSpecifier
拋出:
IllegalStateException - 如果尚未設置輸入源。
IndexOutOfBoundsException - 如果所提供的索引超出範圍。
IOException - 如果從輸入源中讀取格式資訊時發生錯誤。

getImageTypes

public abstract Iterator<ImageTypeSpecifier> getImageTypes(int imageIndex)
                                                    throws IOException
ImageTypeSpecifier 形式返回包含可能的圖像型別的 Iterator,給定圖像可能被解碼成這些型別。至少將返回一個合法圖像型別。

迭代器的第一個元素應該是用於解碼圖像的最“自然的”型別,所帶來的損失盡可能的少。例如,對於 JPEG 圖像,第一項應該是 RGB 圖像,即使圖像資料內部存儲在 YCbCr 顏色空間中。

參數:
imageIndex - 將被 retrieved 的圖像的索引。
返回:
一個 Iterator,它至少包含一個表示用來解碼當前給定圖像的薦圖像型別的 ImageTypeSpecifier
拋出:
IllegalStateException - 如果尚未設置輸入源。
IndexOutOfBoundsException - 如果所提供的索引超出範圍。
IOException - 如果從輸入源中讀取格式資訊時發生錯誤。
另請參見:
ImageReadParam.setDestination(BufferedImage), ImageReadParam.setDestinationType(ImageTypeSpecifier)

getDefaultReadParam

public ImageReadParam getDefaultReadParam()
返回一個適合此格式的預設 ImageReadParam 物件。所有子類別都應該定義一個用於所有參數的預設值集合,並使用此調用返回這些值。可以在設置輸入源之前調用此方法。

預設實作建構並返回一個新的 ImageReadParam 物件,該物件不允許源進行縮放(也就是說,它返回 new ImageReadParam())。

返回:
一個可以使用一組預設設置控制解碼過程的 ImageReadParam 物件。

getStreamMetadata

public abstract IIOMetadata getStreamMetadata()
                                       throws IOException
返回一個 IIOMetadata 物件,它表示作為一個整體與輸入源關聯的元資料(即不與任何特定圖像關聯);如果 reader 不支持讀取元資料、被設置為忽略元資料,或者沒有元資料可用,則返回 null

返回:
IIOMetadata 物件或者 null
拋出:
IOException - 如果在讀取過程中發生錯誤。

getStreamMetadata

public IIOMetadata getStreamMetadata(String formatName,
                                     Set<String> nodeNames)
                              throws IOException
返回一個 IIOMetadata 物件,它表示作為一個整體與輸入源關聯的元資料(即不與任何特定圖像關聯)。如果不存在這樣的資料,則返回 null

得到的元資料物件只負責以 formatName 指定的格式返回文檔。在所有返回的文檔中,只需要返回其名稱是 nodeNames 成員的節點。這樣,基於實際需要的資訊,由 reader 處理的元資料數量可以保持在最低限度。

如果 formatName 不是受支持的元資料格式的名稱,則返回 null

在所有情況下,返回一個功能強於確實必需的元資料物件是合法的。格式名稱和節點名稱僅僅是用來減少 reader 工作負荷的提示。

預設實作在檢查格式名稱是否受支持之後返回調用 getStreamMetadata() 的結果。如果不受支持,則返回 null

參數:
formatName - 可用來從返回的 IIOMetadata 物件中獲取文檔的元資料格式名稱。
nodeNames - 套件含可包含在獲取到的文檔中的節點名稱所組成的 Set
返回:
IIOMetadata 物件或者 null
拋出:
IllegalArgumentException - 如果 formatNamenull
IllegalArgumentException - 如果 nodeNamesnull
IOException - 如果在讀取過程中發生錯誤。

getImageMetadata

public abstract IIOMetadata getImageMetadata(int imageIndex)
                                      throws IOException
返回包含與給定圖像關聯的元資料的 IIOMetadata 物件,如果 reader 不支持讀取元資料、被設置為忽略元資料,或者沒有元資料可用,則返回 null

參數:
imageIndex - 其元資料將被獲取的圖像的索引。
返回:
IIOMetadata 物件或者 null
拋出:
IllegalStateException - 如果尚未設置輸入源。
IndexOutOfBoundsException - 如果所提供的索引超出範圍。
IOException - 如果在讀取過程中發生錯誤。

getImageMetadata

public IIOMetadata getImageMetadata(int imageIndex,
                                    String formatName,
                                    Set<String> nodeNames)
                             throws IOException
返回表示與給定圖像關聯的元資料的 IIOMetadata 物件,如果 reader 不支持讀取元資料或者沒有元資料可用,則返回 null

得到的元資料物件只負責以 formatName 指定的格式返回文檔。在所有返回的文檔中,只需要返回其名稱是 nodeNames 成員的節點。這樣,基於實際需要的資訊,由 reader 處理的元資料數量可以保持在最低限度。

如果 formatName 不是受支持的元資料格式的名稱,則返回 null

在所有情況下,返回一個功能強於確實必需的元資料物件是合法的。格式名稱和節點名稱僅僅是用來減少 reader 工作負荷的提示。

預設實作在檢查格式名稱是否受支持之後返回調用 getImageMetadata(imageIndex) 的結果。如果不受支持,則返回 null

參數:
imageIndex - 其元資料將被獲取的圖像的索引。
formatName - 可用來從返回的 IIOMetadata 物件中獲取文檔的元資料格式名稱。
nodeNames - 套件含可包含在獲取到的文檔中的節點名稱所組成的 Set
返回:
IIOMetadata 物件或者 null
拋出:
IllegalStateException - 如果尚未設置輸入源。
IndexOutOfBoundsException - 如果所提供的索引超出範圍。
IllegalArgumentException - 如果 formatNamenull
IllegalArgumentException - 如果 nodeNamesnull
IOException - 如果在讀取過程中發生錯誤。

read

public BufferedImage read(int imageIndex)
                   throws IOException
使用預設 ImageReadParam 讀取通過索引 imageIndex 指定的圖像,並將其作為一個完整的 BufferedImage 返回。這是一個調用 read(imageIndex, null) 的便捷方法。

返回的圖像將根據從 getImageTypes 中返回的第一個 ImageTypeSpecifier 進行格式化。

所有已註冊的 IIOReadProgressListener 物件將通過以下方式獲得通知:首先調用其 imageStarted 方法,然後在讀取過程中調用其 imageProgress 方法。最後,將調用其 imageComplete 方法。解碼像素時,IIOReadUpdateListener 物件可以在讀取期間的其他時間更新。最後,IIOReadWarningListener 物件將接收解碼期間發生的所有非致命警告。

參數:
imageIndex - 將被獲取的圖像的索引。
返回:
BufferedImage 形式的所需圖像部分。
拋出:
IllegalStateException - 如果尚未設置輸入源。
IndexOutOfBoundsException - 如果所提供的索引超出範圍。
IOException - 如果在讀取過程中發生錯誤。

read

public abstract BufferedImage read(int imageIndex,
                                   ImageReadParam param)
                            throws IOException
使用所提供的 ImageReadParam 讀取通過索引 imageIndex 指定的物件,並將它作為一個完整的 BufferedImage 返回。

實際返回的 BufferedImage 將使用 getDestination 方法定義的演算法來選擇。

所有已註冊的 IIOReadProgressListener 物件將通過以下方式獲得通知:首先調用其 imageStarted 方法,然後在讀取過程中調用其 imageProgress 方法。最後,將調用其 imageComplete 方法。解碼像素時,IIOReadUpdateListener 物件可以在讀取期間的其他時間更新。最後,IIOReadWarningListener 物件將接收解碼期間發生的所有非致命警告。

要讀取的源 band 和要寫入的目標 band 的集合通過在所提供的 ImageReadParam 上調用 getSourceBandsgetDestinationBands 確定。如果這些方法返回的陣列的長度不同、源 band 集合包含一個比最大可用源索引更大的索引,或者目標 band 集合包含一個比最大的合法目標索引更大的索引,則拋出 IllegalArgumentException

如果所提供的 ImageReadParam 套件含不受此 reader 支持的可選設置值(例如 源呈現大小或任何特定於格式的設置),則將忽略這些設置。

參數:
imageIndex - 將被獲取的圖像的索引。
param - 用來控制讀取過程的 ImageReadParam,或者為 null
返回:
BufferedImage 形式的所需圖像部分。
拋出:
IllegalStateException - 如果尚未設置輸入源。
IndexOutOfBoundsException - 如果所提供的索引超出範圍。
IllegalArgumentException - 如果由 param.getSourceBandsparam.getDestinationBands 指定的源 band 和目標 band 的集合在長度上不同,或者包含超出範圍的索引。
IllegalArgumentException - 如果所得圖像的寬度或高度小於 1。
IOException - 如果讀取期間發生錯誤。

readAll

public IIOImage readAll(int imageIndex,
                        ImageReadParam param)
                 throws IOException
使用所提供的 ImageReadParam 讀取通過索引 imageIndex 指定的圖像,並返回包含圖像、縮略圖和相關圖像元資料的 IIOImage

由返回的 IIOImage 實際參考的 BufferedImage 將使用 getDestination 方法定義的演算法來選擇。

所有已註冊的 IIOReadProgressListener 物件將通過以下方式獲得通知:首先調用其 imageStarted 方法,然後在讀取過程中調用其 imageProgress 方法。最後,將調用其 imageComplete 方法。解碼像素時,IIOReadUpdateListener 物件可以在讀取期間的其他時間更新。最後,IIOReadWarningListener 物件將接收解碼期間發生的所有非致命警告。

要讀取的源 band 和要寫入的目標 band 的集合通過在所提供的 ImageReadParam 上調用 getSourceBandsgetDestinationBands 確定。如果這些方法返回的陣列的長度不同、源 band 集合包含一個比最大可用源索引更大的索引,或者目標 band 集合包含一個比最大的合法目標索引更大的索引,則拋出 IllegalArgumentException

無論怎樣設置區域,縮略圖都將以其完整形式返回。

如果所提供的 ImageReadParam 套件含不受此 reader 支持的可選設置值(例如 源呈現大小或任何特定於格式的設置),則將忽略這些設置。

參數:
imageIndex - 將被獲取的圖像的索引。
param - 用來控制讀取過程的 ImageReadParam,或者為 null
返回:
一個 IIOImage,包含所需圖像部分、一個縮略圖集合和關聯的圖像元資料。
拋出:
IllegalStateException - 如果尚未設置輸入源。
IndexOutOfBoundsException - 如果所提供的索引超出範圍。
IllegalArgumentException - 如果由 param.getSourceBandsparam.getDestinationBands 指定的源 band 和目標 band 的集合在長度上不同,或者包含超出範圍的索引。
IllegalArgumentException - 如果所得圖像的寬度或高度小於 1。
IOException - 如果讀取期間發生錯誤。

readAll

public Iterator<IIOImage> readAll(Iterator<? extends ImageReadParam> params)
                           throws IOException
IIOImage 物件形式返回包含輸入源中所有圖像、縮略圖和元資料的 Iterator,從 getMinIndex 給定的索引開始。提供一個套件含 ImageReadParam 物件的 Iterator,從輸入源中讀取的每個圖像使用一個元素,直到不再有圖像可用。如果 read 參數的 Iterator 超出了元素的範圍,但輸入源中仍然有更多的可用圖像,則將預設 read 參數用於剩餘的圖像。

如果 paramsnull,則將預設 read 參數用於所有圖像。

由返回的 IIOImage 實際參考的 BufferedImage 將使用 getDestination 方法定義的演算法來選擇。

所有已註冊 IIOReadProgressListener 物件都將通過調用其 sequenceStarted 方法一次獲得通知。然後,對於每個解碼圖像,都將調用 imageStarted,隨後在讀取過程中調用 imageProgress,最後調用 imageCompletesequenceComplete 方法將在解碼最後一幅圖像後調用。解碼像素時,IIOReadUpdateListener 物件可以在讀取期間的其他時間更新。最後,IIOReadWarningListener 物件將接收解碼期間發生的所有非致命警告。

要讀取的源 band 和要寫入的目標 band 的集合通過在所提供的 ImageReadParam 上調用 getSourceBandsgetDestinationBands 確定。如果這些方法返回的陣列的長度不同、源 band 集合包含一個比最大可用源索引更大的索引,或者目標 band 集合包含一個比最大的合法目標索引更大的索引,則拋出 IllegalArgumentException

無論怎樣設置區域,縮略圖都將以其完整形式返回。

如果任何所提供的 ImageReadParam 都包含不受此 reader 支持的可選設置值(例如 源呈現大小或任何特定於格式的設置),則將忽略這些設置。

參數:
params - 套件含 ImageReadParam 物件的 Iterator
返回:
將輸入源的內容表示為 IIOImageIterator
拋出:
IllegalStateException - 如果尚未設置輸入源。
IllegalArgumentException - 如果 params 的非 null 元素不是一個 ImageReadParam
IllegalArgumentException - 如果由 param.getSourceBandsparam.getDestinationBands 指定的源 band 和目標 band 的集合在長度上不同,或者包含超出範圍的索引。
IllegalArgumentException - 如果所得圖像的寬度或高度小於 1。
IOException - 如果讀取期間發生錯誤。
另請參見:
ImageReadParam, IIOImage

canReadRaster

public boolean canReadRaster()
如果此外掛程式支持只讀取像素資料的 Raster,則返回 true。如果此方法返回 false,則調用 readRasterreadTileRaster 將拋出 UnsupportedOperationException

預設實作返回 false

返回:
如果此外掛程式支持讀取原始 Raster,則返回 true
另請參見:
readRaster(int, javax.imageio.ImageReadParam), readTileRaster(int, int, int)

readRaster

public Raster readRaster(int imageIndex,
                         ImageReadParam param)
                  throws IOException
返回包含圖像串流中原始像素資料的新 Raster 物件,不應用任何顏色轉換。應用程序必須確定如何通過其他方法解釋像素資料。所提供的 ImageReadParam 物件中的任何 destination 或 image-type 參數都被忽略,但其他所有參數的使用與 read 方法完全相同,唯一的不同在於所有的目標偏移量被用作邏輯偏移量而不是物理偏移量。所返回的 Raster 的大小將始終是裁剪為實際圖像的源區域大小。忽略串流自身中的邏輯偏移量。

此方法允許使用通常應用顏色轉換的格式(比如 JPEG)以及通常沒有關聯顏色空間的格式(比如遙感資料或醫學成像資料)來提供對原始像素資料的存取。

所有已註冊的 readUpdateListener 都被忽略,因為沒有 BufferedImage,但會調用其他所有偵聽器,就像將它們用於 read 方法那樣。

如果 canReadRaster() 返回 false,則此方法拋出 UnsupportedOperationException

如果所提供的 ImageReadParam 套件含不受此 reader 支持的可選設置值(例如 源呈現大小或任何特定於格式的設置),則將忽略這些設置。

預設的實作拋出 UnsupportedOperationException

參數:
imageIndex - 要讀取的圖像的索引。
param - 用來控制讀取過程的 ImageReadParam,或者為 null
返回:
Raster 形式的所需圖像部分。
拋出:
UnsupportedOperationException - 如果此外掛程式不支持讀取原始 Raster
IllegalStateException - 如果輸入源尚未設置。
IndexOutOfBoundsException - 如果所提供的索引超出範圍。
IOException - 如果在讀取過程中發生錯誤。
另請參見:
canReadRaster(), read(int), Raster

isImageTiled

public boolean isImageTiled(int imageIndex)
                     throws IOException
如果圖像被組織成 tile(即等大小的非重疊矩形),則返回 true

reader 外掛程式可以選擇是否將圖像中出現的 tiling 按其存儲時的原樣公開。甚至可以選擇圖像中沒有顯式存在 tiling 時公開 tiling。通常,只有在對存取單獨的 tile 有利(在速度或空間方面)時才應該公開 tiling。不管 reader 是否公開 tiling,它必須能夠讀取 ImageReadParam 中指定的任意矩形區域。

對於可以保證所有平鋪所有圖像或者不平鋪圖像的 reader,分別返回 truefalse,而不必存取任何圖像資料。在這種情況下,即使輸入源沒有設置或者圖像索引超出範圍,也未必拋出異常。

預設實作返回 false

參數:
imageIndex - 要查詢的圖像的索引。
返回:
如果圖像被平鋪,則返回 true
拋出:
IllegalStateException - 如果需要輸入源來確定返回值,但沒有設置輸入源。
IndexOutOfBoundsException - 如果必須存取某一圖像來確定返回值,但所提供的索引超出範圍。
IOException - 如果在讀取過程中發生錯誤。

getTileWidth

public int getTileWidth(int imageIndex)
                 throws IOException
返回給定圖像中 tile 的寬度。

預設實作返回 getWidth(imageIndex),對於非平鋪圖像也是如此。支持 tiling 的 reader 應該覆寫此方法。

參數:
imageIndex - 要查詢的圖像的索引。
返回:
tile 的寬度。
拋出:
IllegalStateException - 如果尚未設置輸入源。
IndexOutOfBoundsException - 如果所提供的索引超出範圍。
IOException - 如果在讀取過程中發生錯誤。

getTileHeight

public int getTileHeight(int imageIndex)
                  throws IOException
返回給定圖像中 tile 的高度。

預設實作返回 getHeight(imageIndex),對於非平鋪圖像也是如此。支持 tiling 的 reader 應該覆寫此方法。

參數:
imageIndex - 要查詢的圖像的索引。
返回:
tile 的高度。
拋出:
IllegalStateException - 如果尚未設置輸入源。
IndexOutOfBoundsException - 如果所提供的索引超出範圍。
IOException - 如果在讀取過程中發生錯誤。

getTileGridXOffset

public int getTileGridXOffset(int imageIndex)
                       throws IOException
返回給定圖像中 tile (0, 0) 的左上角的 X 坐標。

對於 tile 網格 X 偏移量總是具有相同值(通常為 0)的 reader,返回該值,而不必存取任何圖像資料。在這種情況下,即使輸入源沒有設置或者圖像索引超出範圍,也未必拋出異常。

預設實作返回 0,對於大多數格式的非平鋪圖像和平鋪圖像也是如此。支持 tiling、具有非 (0, 0) 偏移量的 reader 應該覆寫此方法。

參數:
imageIndex - 要查詢的圖像的索引。
返回:
tile 網格的 X 偏移量。
拋出:
IllegalStateException - 如果需要輸入源來確定返回值,但沒有設置輸入源。
IndexOutOfBoundsException - 如果必須存取某一圖像來確定返回值,但所提供的索引超出範圍。
IOException - 如果在讀取過程中發生錯誤。

getTileGridYOffset

public int getTileGridYOffset(int imageIndex)
                       throws IOException
返回給定圖像中 tile (0, 0) 的左上角的 Y 坐標。

對於 tile 網格 Y 偏移量總是具有相同值(通常為 0)的 reader,返回該值,而不必存取任何圖像資料。在這種情況下,即使輸入源沒有設置或者圖像索引超出範圍,也未必拋出異常。

預設實作返回 0,對於大多數格式的非平鋪圖像和平鋪圖像也是如此。支持 tiling、具有非 (0, 0) 偏移量的 reader 應該覆寫此方法。

參數:
imageIndex - 要查詢的圖像的索引。
返回:
tile 網格的 Y 偏移量。
拋出:
IllegalStateException - 如果需要輸入源來確定返回值,但沒有設置輸入源。
IndexOutOfBoundsException - 如果必須存取某一圖像來確定返回值,但所提供的索引超出範圍。
IOException - 如果在讀取過程中發生錯誤。

readTile

public BufferedImage readTile(int imageIndex,
                              int tileX,
                              int tileY)
                       throws IOException
讀取由 tileXtileY 參數指示的 tile,並以 BufferedImage 形式返回。如果參數超出範圍,則拋出 IllegalArgumentException。如果圖像是非平鋪的,則 0, 0 值將返回整個圖像;其他值都將導致拋出 IllegalArgumentException

此方法只是一個便捷方法,它等效於調用帶有一個 read 參數的 read(int, ImageReadParam),該參數指定源區域的偏移量為 tileX*getTileWidth(imageIndex), tileY*getTileHeight(imageIndex),寬度和高度為 getTileWidth(imageIndex)getTileHeight(imageIndex);並在因子為 1 和偏移量為 0 的情況下進行二次取樣。要對 tile 進行二次取樣,需要使用指定此區域的 read 參數和不同的二次取樣參數調用 read

預設實作在 tileXtileY 為 0 時返回整個圖像,其他情況則拋出 IllegalArgumentException

參數:
imageIndex - 將被獲取的圖像的索引。
tileX - 將被獲取的 tile 的列索引(從 0 開始)。
tileY - 將被獲取的 tile 的行索引(從 0 開始)。
返回:
BufferedImage 形式的 tile。
拋出:
IllegalStateException - 如果尚未設置輸入源。
IndexOutOfBoundsException - 如果 imageIndex 超出範圍。
IllegalArgumentException - 如果 tile 的索引超出範圍。
IOException - 如果在讀取過程中發生錯誤。

readTileRaster

public Raster readTileRaster(int imageIndex,
                             int tileX,
                             int tileY)
                      throws IOException
返回包含 tile 中的原始像素資料的新 Raster 物件,不應用任何顏色轉換。應用程序必須確定如何通過其他方法解釋像素資料。

如果 canReadRaster() 返回 false,則此方法拋出 UnsupportedOperationException

預設實作檢查是否支持讀取 Raster,如果支持且 tileXtileY 為 0,則調用 readRaster(imageIndex, null),否則拋出 IllegalArgumentException

參數:
imageIndex - 將被獲取的圖像的索引。
tileX - 將被獲取的 tile 的列索引(從 0 開始)。
tileY - 將被獲取的 tile 的行索引(從 0 開始)。
返回:
Raster 形式的 tile。
拋出:
UnsupportedOperationException - 如果此外掛程式不支持讀取原始 Raster
IllegalArgumentException - 如果 tile 索引超出範圍。
IllegalStateException - 如果尚未設置輸入源。
IndexOutOfBoundsException - 如果 imageIndex 超出範圍。
IOException - 如果在讀取過程中發生錯誤。
另請參見:
readTile(int, int, int), readRaster(int, javax.imageio.ImageReadParam), Raster

readAsRenderedImage

public RenderedImage readAsRenderedImage(int imageIndex,
                                         ImageReadParam param)
                                  throws IOException
返回一個 RenderedImage 物件,該物件包含通過索引 imageIndex 指定的圖像的內容。預設情況下,返回的圖像是由 read(imageIndex, param) 返回的 BufferedImage

此方法的語義在某些方面可能不同於其他 read 方法的語義。首先,可以忽略 ImageReadParam 中設置的任何目標圖像和/或圖像型別。其次,不保證進行一般的偵聽器調用,或者進行這些調用時不保證它們是有意義的。這是因為在返回時(甚至任何時候)返回的圖像可能並不完全由像素資料填充。

如果所提供的 ImageReadParam 套件含不受此 reader 支持的可選設置值(例如 源呈現大小或任何特定於格式的設置),則將忽略這些設置。

預設實作調用 read(imageIndex, param)

參數:
imageIndex - 將被獲取的圖像的索引。
param - 用來控制讀取過程的 ImageReadParam,或者為 null
返回:
提供圖像視圖的 RenderedImage 物件。
拋出:
IllegalStateException - 如果尚未設置輸入源。
IndexOutOfBoundsException - 如果所提供的索引超出範圍。
IllegalArgumentException - 如果由 param.getSourceBandsparam.getDestinationBands 指定的源 band 和目標 band 的集合在長度上不同,或者包含超出範圍的索引。
IllegalArgumentException - 如果所得圖像的寬度或高度小於 1。
IOException - 如果讀取期間發生錯誤。

readerSupportsThumbnails

public boolean readerSupportsThumbnails()
如果此 reader 所理解的圖像格式支持與之關聯的縮略圖預覽圖像,則返回 true。預設實作返回 false

如果此方法返回 falsehasThumbnailsgetNumThumbnails 將分別返回 false0,而 readThumbnail 將拋出 UnsupportedOperationException(不管其參數如何)。

不支持縮略圖的 reader 不需要實作任何與縮略圖有關的方法。

返回:
如果支持縮略圖,則返回 true

hasThumbnails

public boolean hasThumbnails(int imageIndex)
                      throws IOException
如果給定圖像具有與之關聯的縮略圖預覽圖像,則返回 true。如果該格式不支持縮略圖(readerSupportsThumbnails 返回 false),則無論是否已經設置了輸入源或者 imageIndex 是否在範圍內,其都將將返回 false

預設實作在 getNumThumbnails 的返回值大於 0 的情況下返回 true

參數:
imageIndex - 要查詢的圖像的索引。
返回:
如果給定圖像具有縮略圖,則返回 true
拋出:
IllegalStateException - 如果 reader 支持縮略圖但尚未設置輸入源。
IndexOutOfBoundsException - 如果 reader 支持縮略圖但 imageIndex 超出範圍。
IOException - 如果在讀取過程中發生錯誤。

getNumThumbnails

public int getNumThumbnails(int imageIndex)
                     throws IOException
返回與給定圖像關聯的縮略圖預覽圖像的數量。如果該格式不支持縮略圖(readerSupportsThumbnails 返回 false),則無論是否已經設置了輸入源或者 imageIndex 是否在範圍內,其都將將返回 0

預設實作返回 0,不檢查其參數。

參數:
imageIndex - 要查詢的圖像的索引。
返回:
與給定圖像關聯的縮略圖的數量。
拋出:
IllegalStateException - 如果 reader 支持縮略圖但尚未設置輸入源。
IndexOutOfBoundsException - 如果 reader 支持縮略圖但 imageIndex 超出範圍。
IOException - 如果在讀取過程中發生錯誤。

getThumbnailWidth

public int getThumbnailWidth(int imageIndex,
                             int thumbnailIndex)
                      throws IOException
返回通過索引 thumbnailIndex 指定的縮略圖預覽圖像的寬度,其與通過索引 ImageIndex 指定的圖像關聯。

如果 reader 不支持縮略圖(readerSupportsThumbnails 返回 false),則將拋出 UnsupportedOperationException

預設實作返回 readThumbnail(imageindex, thumbnailIndex).getWidth()。所以,為了避免強行讀取縮略圖,子類別應該覆寫此方法(如果有可能)。

參數:
imageIndex - 將被獲取的圖像的索引。
thumbnailIndex - 將被獲取的縮略圖的索引。
返回:
int 形式的所需縮略圖寬度。
拋出:
UnsupportedOperationException - 如果不支持縮略圖。
IllegalStateException - 如果尚未設置輸入源。
IndexOutOfBoundsException - 如果任何一個所提供的索引超出範圍。
IOException - 如果在讀取過程中發生錯誤。

getThumbnailHeight

public int getThumbnailHeight(int imageIndex,
                              int thumbnailIndex)
                       throws IOException
返回通過索引 thumbnailIndex 指定的縮略圖預覽圖像的高度,其與通過索引 ImageIndex 指定的圖像關聯。

如果 reader 不支持縮略圖(readerSupportsThumbnails 返回 false),則將拋出 UnsupportedOperationException

預設實作返回 readThumbnail(imageindex, thumbnailIndex).getHeight()。所以,為了避免強行讀取縮略圖,子類別應該覆寫此方法(如果有可能)。

參數:
imageIndex - 將被獲取的圖像的索引。
thumbnailIndex - 將被獲取的縮略圖的索引。
返回:
int 形式的所需縮略圖高度。
拋出:
UnsupportedOperationException - 如果不支持縮略圖。
IllegalStateException - 如果尚未設置輸入源。
IndexOutOfBoundsException - 如果任何一個所提供的索引超出範圍。
IOException - 如果在讀取過程中發生錯誤。

readThumbnail

public BufferedImage readThumbnail(int imageIndex,
                                   int thumbnailIndex)
                            throws IOException
BufferedImage 形式返回通過索引 thumbnailIndex 指定的縮略圖預覽圖像,其與通過索引 ImageIndex 指定的圖像關聯。

所有已註冊 IIOReadProgressListener 物件都將通過調用其 thumbnailStartedthumbnailProgressthumbnailComplete 方法獲得通知。

如果 reader 不支持縮略圖(readerSupportsThumbnails 返回 false),則無論是否已經設置了輸入源或者索引是否在範圍內,其都將拋出 UnsupportedOperationException

預設的實作拋出 UnsupportedOperationException

參數:
imageIndex - 將被獲取的圖像的索引。
thumbnailIndex - 將被獲取的縮略圖的索引。
返回:
BufferedImage 形式的所需縮略圖。
拋出:
UnsupportedOperationException - 如果不支持縮略圖。
IllegalStateException - 如果尚未設置輸入源。
IndexOutOfBoundsException - 如果任何一個所提供的索引超出範圍。
IOException - 如果在讀取過程中發生錯誤。

abort

public void abort()
請求中止當前所有讀取操作。中止後圖像的內容將是不確定的。

reader 應該在開始每個讀取操作時調用 clearAbortRequest,並在讀取期間定期輪詢 abortRequested 的值。


abortRequested

protected boolean abortRequested()
如果從實例化 reader 或調用 clearAbortRequest 時起,已經請求了中止當前讀取操作,則返回 true

返回:
如果應該中止當前讀取操作,則返回 true
另請參見:
abort(), clearAbortRequest()

clearAbortRequest

protected void clearAbortRequest()
清除任何以前的中止請求。在已調用此方法之後,abortRequested 將返回 false

另請參見:
abort(), abortRequested()

addIIOReadWarningListener

public void addIIOReadWarningListener(IIOReadWarningListener listener)
IIOReadWarningListener 添加到已註冊的警告偵聽器的列表中。如果 listenernull,則不會拋出任何異常並且不執行任何操作。將本地化發送到給定偵聽器的訊息(如果可能)以比對當前 Locale。如果沒有設置 Locale,則可將警告訊息本地化為適合 reader 的形式。

參數:
listener - 要註冊的 IIOReadWarningListener
另請參見:
removeIIOReadWarningListener(javax.imageio.event.IIOReadWarningListener)

removeIIOReadWarningListener

public void removeIIOReadWarningListener(IIOReadWarningListener listener)
從已註冊的錯誤偵聽器列表中移除 IIOReadWarningListener。如果以前沒有註冊偵聽器,或者 listenernull,則不會拋出任何異常並且不執行任何操作。

參數:
listener - 要取消註冊的 IIOReadWarningListener。
另請參見:
addIIOReadWarningListener(javax.imageio.event.IIOReadWarningListener)

removeAllIIOReadWarningListeners

public void removeAllIIOReadWarningListeners()
移除所有當前已註冊的 IIOReadWarningListener 物件。

預設實作將 warningListenerswarningLocales 實例變數設置為 null


addIIOReadProgressListener

public void addIIOReadProgressListener(IIOReadProgressListener listener)
IIOReadProgressListener 添加到已註冊的進度偵聽器列表中。如果 listenernull,則不會拋出任何異常並且不執行任何操作。

參數:
listener - 要註冊的 IIOReadProgressListener。
另請參見:
removeIIOReadProgressListener(javax.imageio.event.IIOReadProgressListener)

removeIIOReadProgressListener

public void removeIIOReadProgressListener(IIOReadProgressListener listener)
從已註冊的進度偵聽器列表中移除 IIOReadProgressListener。如果以前沒有註冊偵聽器,或者 listenernull,則不會拋出任何異常並且不執行任何操作。

參數:
listener - 要取消註冊的 IIOReadProgressListener。
另請參見:
addIIOReadProgressListener(javax.imageio.event.IIOReadProgressListener)

removeAllIIOReadProgressListeners

public void removeAllIIOReadProgressListeners()
移除所有當前已註冊的 IIOReadProgressListener 物件。

預設實作將 progressListeners 實例變數設置為 null


addIIOReadUpdateListener

public void addIIOReadUpdateListener(IIOReadUpdateListener listener)
IIOReadUpdateListener 添加到已註冊的更新偵聽器列表中。如果 listenernull,則不會拋出任何異常並且不執行任何操作。在解碼圖像和縮略圖時,偵聽器將接收像素更新的通知,該通知中包括逐步傳遞的起始處和結束處。

如果不存在更新偵聽器,則 reader 可以選擇對目標圖像和/或縮略圖的像素執行較少的更新,這能促使更加有效的解碼。

例如,在逐步 JPEG 解碼過程中,每個傳遞都包含對一個係數集合的更新資料,如果偵聽器存在,則必須將這些係數變換成像素值並轉換為用於每個傳遞的 RGB 顏色空間。如果不存在偵聽器,則可以累計這些係數,並只變換最終結果和轉換顏色一次。

無論是否執行中間的更新,解碼的最終結果都相同。因此,如果只需要最終圖像,則最好不註冊任何 IIOReadUpdateListener。通常,在通過與本地 CPU 處理相比非常慢的網路連接獲取圖像時,逐步更新是最有效的;而通過快速連接時,逐步更新實際上會降低圖像的顯示速度。

參數:
listener - 要註冊的 IIOReadUpdateListener。
另請參見:
removeIIOReadUpdateListener(javax.imageio.event.IIOReadUpdateListener)

removeIIOReadUpdateListener

public void removeIIOReadUpdateListener(IIOReadUpdateListener listener)
從已註冊的更新偵聽器列表中移除 IIOReadUpdateListener。如果以前沒有註冊偵聽器,或者 listenernull,則不會拋出任何異常並且不執行任何操作。

參數:
listener - 要取消註冊的 IIOReadUpdateListener。
另請參見:
addIIOReadUpdateListener(javax.imageio.event.IIOReadUpdateListener)

removeAllIIOReadUpdateListeners

public void removeAllIIOReadUpdateListeners()
移除所有當前已註冊的 IIOReadUpdateListener 物件。

預設實作將 updateListeners 實例變數設置為 null


processSequenceStarted

protected void processSequenceStarted(int minIndex)
通過調用所有已註冊 IIOReadProgressListenersequenceStarted 方法向其廣播圖像讀取序列的起始處。子類別可以將此方法用作一個便捷方法。

參數:
minIndex - 將讀取的最低索引。

processSequenceComplete

protected void processSequenceComplete()
通過調用所有已註冊 IIOReadProgressListenersequenceComplete 方法向其廣播圖像讀取序列的完成。子類別可以將此方法用作一個便捷方法。


processImageStarted

protected void processImageStarted(int imageIndex)
通過調用所有已註冊 IIOReadProgressListenerimageStarted 方法向其廣播圖像讀取起始處。子類別可以將此方法用作一個便捷方法。

參數:
imageIndex - 即將讀取的圖像的索引。

processImageProgress

protected void processImageProgress(float percentageDone)
通過調用所有已註冊 IIOReadProgressListenerimageProgress 方法向其廣播圖像完成的當前百分比。子類別可以將此方法用作一個便捷方法。

參數:
percentageDone - float 值形式的當前完成百分比。

processImageComplete

protected void processImageComplete()
通過調用所有已註冊 IIOReadProgressListenerimageComplete 方法向其廣播圖像讀取的完成。子類別可以將此方法用作一個便捷方法。


processThumbnailStarted

protected void processThumbnailStarted(int imageIndex,
                                       int thumbnailIndex)
通過調用所有已註冊 IIOReadProgressListenerthumbnailStarted 方法向其廣播縮略圖讀取的起始處。子類別可以將此方法用作一個便捷方法。

參數:
imageIndex - 與該縮略圖關聯的圖像的索引。
thumbnailIndex - 縮略圖的索引。

processThumbnailProgress

protected void processThumbnailProgress(float percentageDone)
通過調用所有已註冊 IIOReadProgressListenerthumbnailProgress 方法向其廣播縮略圖完成的當前百分比。子類別可以將此方法用作一個便捷方法。

參數:
percentageDone - float 值形式的當前完成百分比。

processThumbnailComplete

protected void processThumbnailComplete()
通過調用所有已註冊 IIOReadProgressListenerthumbnailComplete 方法向其廣播縮略圖讀取的完成。子類別可以將此方法用作一個便捷方法。


processReadAborted

protected void processReadAborted()
通過調用所有已註冊 IIOReadProgressListenerreadAborted 方法向其廣播讀取已經中止。子類別可以將此方法用作一個便捷方法。


processPassStarted

protected void processPassStarted(BufferedImage theImage,
                                  int pass,
                                  int minPass,
                                  int maxPass,
                                  int minX,
                                  int minY,
                                  int periodX,
                                  int periodY,
                                  int[] bands)
通過調用所有已註冊 IIOReadUpdateListenerpassStarted 方法向其廣播逐步傳遞的開始。子類別可以將此方法用作一個便捷方法。

參數:
theImage - 將被更新的 BufferedImage
pass - 當前傳遞的索引,從 0 開始。
minPass - 將被解碼的第一個傳遞的索引。
maxPass - 將要解碼的最後一個傳遞的索引。
minX - 套件含在該傳遞中的左上角像素的 X 坐標。
minY - 套件含在該傳遞中的左上角像素的 Y 坐標。
periodX - 像素間的水平間距。
periodY - 像素間的垂直間距。
bands - 指示受影響目標 band 集合的 int 陣列。

processImageUpdate

protected void processImageUpdate(BufferedImage theImage,
                                  int minX,
                                  int minY,
                                  int width,
                                  int height,
                                  int periodX,
                                  int periodY,
                                  int[] bands)
通過調用所有已註冊 IIOReadUpdateListenerimageUpdate 方法向其廣播樣本集合的更新。子類別可以將此方法用作一個便捷方法。

參數:
theImage - 將被更新的 BufferedImage
minX - 套件含在該傳遞中的左上角像素的 X 坐標。
minY - 套件含在該傳遞中的左上角像素的 Y 坐標。
width - 將被更新的區域的總寬度,包括將跳過的像素(如果 periodX > 1)。
height - 將被更新的區域的總高度,包括將跳過的像素(如果 periodY > 1)。
periodX - 像素間的水平間距。
periodY - 像素間的垂直間距。
bands - 指示受影響目標 band 集合的 int 陣列。

processPassComplete

protected void processPassComplete(BufferedImage theImage)
通過調用所有已註冊 IIOReadUpdateListenerpassComplete 方法向其廣播逐步傳遞的結束。子類別可以將此方法用作一個便捷方法。

參數:
theImage - 將被更新的 BufferedImage

processThumbnailPassStarted

protected void processThumbnailPassStarted(BufferedImage theThumbnail,
                                           int pass,
                                           int minPass,
                                           int maxPass,
                                           int minX,
                                           int minY,
                                           int periodX,
                                           int periodY,
                                           int[] bands)
通過調用所有已註冊 IIOReadUpdateListenerthumbnailPassStarted 方法向其廣播縮略圖逐步傳遞的開始。子類別可以將此方法用作一個便捷方法。

參數:
theThumbnail - 將被更新的 BufferedImage 縮略圖。
pass - 當前傳遞的索引,從 0 開始。
minPass - 將被解碼的第一個傳遞的索引。
maxPass - 將要解碼的最後一個傳遞的索引。
minX - 套件含在該傳遞中的左上角像素的 X 坐標。
minY - 套件含在該傳遞中的左上角像素的 Y 坐標。
periodX - 像素間的水平間距。
periodY - 像素間的垂直間距。
bands - 指示受影響目標 band 集合的 int 陣列。

processThumbnailUpdate

protected void processThumbnailUpdate(BufferedImage theThumbnail,
                                      int minX,
                                      int minY,
                                      int width,
                                      int height,
                                      int periodX,
                                      int periodY,
                                      int[] bands)
通過調用所有已註冊 IIOReadUpdateListenerthumbnailUpdate 方法向其廣播縮略圖圖像中樣本集合的更新。子類別可以將此方法用作一個便捷方法。

參數:
theThumbnail - 將被更新的 BufferedImage 縮略圖。
minX - 套件含在該傳遞中的左上角像素的 X 坐標。
minY - 套件含在該傳遞中的左上角像素的 Y 坐標。
width - 將被更新的區域的總寬度,包括將跳過的像素(如果 periodX > 1)。
height - 將被更新的區域的總高度,包括將跳過的像素(如果 periodY > 1)。
periodX - 像素間的水平間距。
periodY - 像素間的垂直間距。
bands - 指示受影響目標 band 集合的 int 陣列。

processThumbnailPassComplete

protected void processThumbnailPassComplete(BufferedImage theThumbnail)
通過調用所有已註冊 IIOReadUpdateListenerthumbnailPassComplete 方法向其廣播縮略圖逐步傳遞的結束。子類別可以將此方法用作一個便捷方法。

參數:
theThumbnail - 將被更新的 BufferedImage 縮略圖。

processWarningOccurred

protected void processWarningOccurred(String warning)
通過調用所有已註冊 IIOReadWarningListenerwarningOccurred 方法向其廣播警告訊息。子類別可以將此方法用作一個便捷方法。

參數:
warning - 要發送的警告訊息。
拋出:
IllegalArgumentException - 如果 warningnull

processWarningOccurred

protected void processWarningOccurred(String baseName,
                                      String keyword)
通過使用取自 ResourceBundle 的字元串調用所有已註冊 IIOReadWarningListenerwarningOccurred 方法向其廣播本地化警告訊息。子類別可以將此方法用作一個便捷方法。

參數:
baseName - 套件含本地化警告訊息的 ResourceBundle 集合的基本名稱。
keyword - 用來搜尋 ResourceBundle 集合中的警告訊息的關鍵字。
拋出:
IllegalArgumentException - 如果 baseNamenull
IllegalArgumentException - 如果 keywordnull
IllegalArgumentException - 如果無法定位合適的 ResourceBundle
IllegalArgumentException - 如果在定位的 ResourceBundle 中無法找到指定的資源。
IllegalArgumentException - 如果從 ResourceBundle 中獲取到的物件不是 String

reset

public void reset()
ImageReader 恢復到其初始狀態。

預設實作調用 setInput(null, false)setLocale(null)removeAllIIOReadUpdateListeners()removeAllIIOReadWarningListeners()removeAllIIOReadProgressListeners()clearAbortRequest


dispose

public void dispose()
允許釋放此物件佔用的所有資源。在調用此方法後調用其他任何方法(finalize 除外)所產生的結果都是不確定的。

應用程序在確信不再使用此 ImageReader 時,調用此方法非常重要。否則,reader 將繼續無限期地佔用這些資源。

在父級類別中,此方法的預設實作不執行任何操作。子類別實作應該確保所有資源(特別是本機資源)被釋放。


getSourceRegion

protected static Rectangle getSourceRegion(ImageReadParam param,
                                           int srcWidth,
                                           int srcHeight)
reader 可用來計算應該讀取的源圖像區域的一個實用方法,計算時考慮任何源區域,並在所提供的 ImageReadParam 中對偏移量設置進行二次取樣。實際二次取樣因子、目標大小和目標偏移量都沒有 考慮,因此必須進行進一步的裁剪。computeRegions 方法執行所有必要的裁剪。

參數:
param - 將使用的 ImageReadParam,或者為 null
srcWidth - 源圖像的寬度。
srcHeight - 源圖像的高度。
返回:
Rectangle 形式的源區域。

computeRegions

protected static void computeRegions(ImageReadParam param,
                                     int srcWidth,
                                     int srcHeight,
                                     BufferedImage image,
                                     Rectangle srcRegion,
                                     Rectangle destRegion)
計算感興趣的源區域和目標區域,將源圖像的寬度和高度、可選目標圖像和可選 ImageReadParam 都考慮在內。源區域從整個源圖像開始。如果指定了一感興趣的區域,則其將裁剪在 ImageReadParam 中指定的源區域。

如果任何區域的目標偏移量都為負,則裁剪源區域,使其左上部與目標圖像的左上部一致,裁剪時將二次取樣考慮在內。然後裁剪結果,使其與目標圖像(如果指定了目標圖像)右下部一致,將二次取樣和目標偏移量考慮在內。

類似地,從源圖像開始的目標區域被轉換成 ImageReadParam 中給定的目標偏移量(如果有),並最終被裁剪成目標圖像(如果有)。

如果源區域或目標區域的最終寬度或高度為 0,則拋出 IllegalArgumentException

只有需要對源區域進行裁剪時,才能使用 getSourceRegion 方法。

參數:
param - 一個 ImageReadParam,或者為 null
srcWidth - 源圖像的寬度。
srcHeight - 源圖像的高度。
image - 將成為目標圖像的 BufferedImage,或者為 null
srcRegion - 將使用感興趣的源區域填充的 Rectangle
destRegion - 將使用感興趣的目標區域填充的 Rectangle
拋出:
IllegalArgumentException - 如果 srcRegionnull
IllegalArgumentException - 如果 dstRegionnull
IllegalArgumentException - 如果所得到的源區域或目標區域為空。

checkReadParamBandSettings

protected static void checkReadParamBandSettings(ImageReadParam param,
                                                 int numSrcBands,
                                                 int numDstBands)
reader 可用來測試 ImageReadParam 的源和目標 band 設置的有效性的實用方法。只要 reader 一確定輸入串流中存在的目標圖像的 band 數,以及將寫入的目標圖像的 band 數,就可以調用此方法。

該方法根據參數使用 getSourceBandsgetDestinationBands 方法獲取源和目標 band 設置值陣列(如果 paramnull ,則將其視為 null)。如果源 band 設置值陣列為 null,則認為其等同於陣列 { 0, 1, ..., numSrcBands - 1 },對於目標 band 設置值陣列情況類似。

然後該方法測試兩個陣列的長度是否相等,以及是否兩個陣列都沒有包含大於最大可用 band 索引的值。

任何失敗都將導致拋出 IllegalArgumentException;而成功則導致方法正常返回。

參數:
param - 將用來讀取圖像 ImageReadParam
numSrcBands - 輸入源中存在的圖像的 band 數。
numDstBands - 將被寫入的目標圖像中的 band 數。
拋出:
IllegalArgumentException - 如果 param 套件含源和/或目標 band 子集的無效規範。

getDestination

protected static BufferedImage getDestination(ImageReadParam param,
                                              Iterator<ImageTypeSpecifier> imageTypes,
                                              int width,
                                              int height)
                                       throws IIOException
返回應該在其中寫入解碼的像素資料的 BufferedImage。通過檢查所提供的 ImageReadParam(如果非 null)來確定圖像;如果其 getDestination 方法返回一個非 null 值,則返回該圖像。否則,調用 param.getDestinationType 方法來確定是否指定了某一特定圖像型別。如果已指定,則在檢查其是否等於 imageTypes 中包含的型別之一後使用所返回的 ImageTypeSpecifier

如果 paramnull 或者上述步驟沒有產生一幅圖像或 ImageTypeSpecifier,則使用從 imageTypes 參數獲得的第一個值。通常,調用者會將 imageTypes 設置為 getImageTypes(imageIndex) 的值。

接下來,通過調用 computeRegions 確定圖像的維數。將被解碼的圖像的實際寬度和高度以 widthheight 參數的形式傳入。

參數:
param - 將用來獲得目標圖像或圖像型別的 ImageReadParam,或者為 null
imageTypes - 指示合法圖像型別的 ImageTypeSpecifierIterator(預設型別最先使用)。
width - 開始解碼的圖像或 tile 的實際寬度。
height - 開始解碼的圖像或 tile 的實際高度。
返回:
應該在其中寫入解碼的像素資料的 BufferedImage
拋出:
IIOException - 如果由 param 指定的 ImageTypeSpecifier 與來自 imageTypes 的任何合法型別不比對。
IllegalArgumentException - 如果 imageTypesnull 或空,或者從中獲取到的物件型別不是 ImageTypeSpecifier
IllegalArgumentException - 如果得到的圖像寬度或高度小於 1。
IllegalArgumentException - 如果 widthheight 的值大於 Integer.MAX_VALUE

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only