|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object javax.imageio.ImageReader
public abstract class ImageReader
用來解析和解碼圖像的抽象父級類別。在 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()
如果此外掛程式支持只讀取像素資料的 ,則返回 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 ,指示最能代表圖像“原始”內部格式的 SampleModel 和 ColorModel 。 |
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()
通過調用所有已註冊 IIOReadProgressListener 的 imageComplete 方法向其廣播圖像讀取的完成。 |
protected void |
processImageProgress(float percentageDone)
通過調用所有已註冊 IIOReadProgressListener 的 imageProgress 方法向其廣播圖像完成的當前百分比。 |
protected void |
processImageStarted(int imageIndex)
通過調用所有已註冊 IIOReadProgressListener 的 imageStarted 方法向其廣播圖像讀取起始處。 |
protected void |
processImageUpdate(BufferedImage theImage,
int minX,
int minY,
int width,
int height,
int periodX,
int periodY,
int[] bands)
通過調用所有已註冊 IIOReadUpdateListener 的 imageUpdate 方法向其廣播樣本集合的更新。 |
protected void |
processPassComplete(BufferedImage theImage)
通過調用所有已註冊 IIOReadUpdateListener 的 passComplete 方法向其廣播逐步傳遞的結束。 |
protected void |
processPassStarted(BufferedImage theImage,
int pass,
int minPass,
int maxPass,
int minX,
int minY,
int periodX,
int periodY,
int[] bands)
通過調用所有已註冊 IIOReadUpdateListener 的 passStarted 方法向其廣播逐步傳遞的開始。 |
protected void |
processReadAborted()
通過調用所有已註冊 IIOReadProgressListener 的 readAborted 方法向其廣播讀取已經中止。 |
protected void |
processSequenceComplete()
通過調用所有已註冊 IIOReadProgressListener 的 sequenceComplete 方法向其廣播圖像讀取序列的完成。 |
protected void |
processSequenceStarted(int minIndex)
通過調用所有已註冊 IIOReadProgressListener 的 sequenceStarted 方法向其廣播圖像讀取序列的起始處。 |
protected void |
processThumbnailComplete()
通過調用所有已註冊 IIOReadProgressListener 的 thumbnailComplete 方法向其廣播縮略圖讀取的完成。 |
protected void |
processThumbnailPassComplete(BufferedImage theThumbnail)
通過調用所有已註冊 IIOReadUpdateListener 的 thumbnailPassComplete 方法向其廣播縮略圖逐步傳遞的結束。 |
protected void |
processThumbnailPassStarted(BufferedImage theThumbnail,
int pass,
int minPass,
int maxPass,
int minX,
int minY,
int periodX,
int periodY,
int[] bands)
通過調用所有已註冊 IIOReadUpdateListener 的 thumbnailPassStarted 方法向其廣播縮略圖逐步傳遞的開始。 |
protected void |
processThumbnailProgress(float percentageDone)
通過調用所有已註冊 IIOReadProgressListener 的 thumbnailProgress 方法向其廣播縮略圖完成的當前百分比。 |
protected void |
processThumbnailStarted(int imageIndex,
int thumbnailIndex)
通過調用所有已註冊 IIOReadProgressListener 的 thumbnailStarted 方法向其廣播縮略圖讀取的起始處。 |
protected void |
processThumbnailUpdate(BufferedImage theThumbnail,
int minX,
int minY,
int width,
int height,
int periodX,
int periodY,
int[] bands)
通過調用所有已註冊 IIOReadUpdateListener 的 thumbnailUpdate 方法向其廣播縮略圖圖像中樣本集合的更新。 |
protected void |
processWarningOccurred(String warning)
通過調用所有已註冊 IIOReadWarningListener 的 warningOccurred 方法向其廣播警告訊息。 |
protected void |
processWarningOccurred(String baseName,
String keyword)
通過使用取自 ResourceBundle 的字元串調用所有已註冊 IIOReadWarningListener 的 warningOccurred 方法向其廣播本地化警告訊息。 |
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)
讀取由 tileX 和 tileY 參數指示的 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 |
欄位詳細資訊 |
---|
protected ImageReaderSpi originatingProvider
ImageReaderSpi
,如果其身份未知或不存在,則為 null
。預設情況下初始化為 null
。
protected Object input
setInput
設置並由 getInput
獲取的 ImageInputStream
或其他 Object
。預設情況下初始化為 null
。
protected boolean seekForwardOnly
setInput
標記為允許只向前搜尋,則為 true
。預設情況下,該值為 false
。
minIndex
,
setInput(java.lang.Object, boolean, boolean)
protected boolean ignoreMetadata
setInput
標記為允許忽略元資料,則為 true
。預設情況下,該值為 false
。
setInput(java.lang.Object, boolean, boolean)
protected int minIndex
seekForwardOnly
為 true
,各種方法在試圖存取與擁有更低索引的圖像關聯的資料時將拋出 IndexOutOfBoundsException
。
seekForwardOnly
,
setInput(java.lang.Object, boolean, boolean)
protected Locale[] availableLocales
Locale
組成的陣列,如果不支持本地化,則為 null
。
protected Locale locale
Locale
,如果沒有設置,則為 null
。
protected List<IIOReadWarningListener> warningListeners
IIOReadWarningListener
組成的 List
,預設情況下初始化為 null
,它與空 List
同義。
protected List<Locale> warningLocales
IIOReadWarningListener
關聯的 Locale
組成的 List
,預設情況下初始化為 null
,它與空 List
同義。
protected List<IIOReadProgressListener> progressListeners
IIOReadProgressListener
組成的 List
,預設情況下初始化為 null
,它與空 List
同義。
protected List<IIOReadUpdateListener> updateListeners
IIOReadUpdateListener
組成的 List
,預設情況下初始化為 null
,它與空 List
同義。
建構子詳細資訊 |
---|
protected ImageReader(ImageReaderSpi originatingProvider)
ImageReader
,並將其 originatingProvider
欄位設置為所提供的值。
利用擴展的子類別應該為提供具有簽章 (ImageReaderSpi, Object)
的建構子來獲取擴展物件。如果擴展物件不合適,則將拋出 IllegalArgumentException
。
originatingProvider
- 調用此建構子的 ImageReaderSpi
,或者為 null
。方法詳細資訊 |
---|
public String getFormatName() throws IOException
String
。
預設實作返回 originatingProvider.getFormatNames()[0]
。沒有原始服務提供者的實作或者希望使用不同命名策略的實作應該覆寫此方法。
String
形式的格式名稱。
IOException
- 如果從輸入源中讀取資訊時發生錯誤。public ImageReaderSpi getOriginatingProvider()
ImageReaderSpi
。注意,此值可能為 null
。
ImageReaderSpi
或 null
。ImageReaderSpi
public void setInput(Object input, boolean seekForwardOnly, boolean ignoreMetadata)
ImageInputStream
或其他 Object
的輸入源。輸入源必須在使用任何查詢或讀取方法之前設置。如果 input
為 null
,則將移除所有當前設置的輸入源。無論是哪種情況,minIndex
的值都將被初始化為 0。
seekForwardOnly
參數控制在讀取每個圖像(或者縮略圖或圖像元資料)時,由 getMinIndex
返回的值是否增加。如果 seekForwardOnly
為 true,則在 index < this.minIndex
的情況下調用 read(index)
將拋出 IndexOutOfBoundsException
;否則 minIndex
的值將被設置為 index
。如果 seekForwardOnly
為 false
,則 minIndex
的值將仍然為 0,不考慮任何讀取操作。
如果將 ignoreMetadata
參數設置為 true
,則允許 reader 忽略讀取操作期間遇到的任何元資料。後續調用 getStreamMetadata
和 getImageMetadata
方法可能返回 null
,從 readAll
返回的 IIOImage
的 getMetadata
方法可能返回 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()
public void setInput(Object input, boolean seekForwardOnly)
ImageInputStream
或其他 Object
的輸入源。輸入源必須在使用任何查詢或讀取方法之前設置。如果 input
為 null
,則將移除所有當前設置的輸入源。無論是哪種情況,minIndex
的值都將被初始化為 0。
seekForwardOnly
參數控制在讀取每個圖像(或者縮略圖或圖像元資料)時,由 getMinIndex
返回的值是否增加。如果 seekForwardOnly
為 true,則在 index < this.minIndex
的情況下調用 read(index)
將拋出 IndexOutOfBoundsException
;否則 minIndex
的值將被設置為 index
。如果 seekForwardOnly
為 false
,則 minIndex
的值將仍然為 0,不考慮任何讀取操作。
此方法等效於 setInput(input, seekForwardOnly, false)
。
input
- 將來解碼時用到的 ImageInputStream
或其他 Object
。seekForwardOnly
- 如果為 true
,則只能按升序從此輸入源中讀取圖像和元資料。
IllegalArgumentException
- 如果 input
不是原始服務提供者的 getInputTypes
方法返回的某個類別的實例,或者不是一個 ImageInputStream
。getInput()
public void setInput(Object input)
ImageInputStream
或其他 Object
的輸入源。輸入源必須在使用任何查詢或讀取方法之前設置。如果 input
為 null
,則將移除所有當前設置的輸入源。無論是哪種情況,minIndex
的值都將被初始化為 0。
此方法等效於 setInput(input, false, false)
。
input
- 將來解碼時用到的 ImageInputStream
或其他 Object
。
IllegalArgumentException
- 如果 input
不是原始服務提供者的 getInputTypes
方法返回的某個類別的實例,或者不是一個 ImageInputStream
。getInput()
public Object getInput()
ImageInputStream
或其他 Object
。如果沒有設置輸入源,則返回 null
。
Object
;或者 null
。ImageInputStream
,
setInput(java.lang.Object, boolean, boolean)
public boolean isSeekForwardOnly()
true
作為 setInput
方法的 seekForwardOnly
參數將當前輸入源標記為只向前搜尋,則返回 true
。
true
。setInput(java.lang.Object, boolean, boolean)
public boolean isIgnoringMetadata()
true
作為 setInput
方法的 ignoreMetadata
參數將當前輸入源標記為允許忽略元資料,則返回 true
。
true
。setInput(java.lang.Object, boolean, boolean)
public int getMinIndex()
seekForwardOnly()
為 false
,此值通常仍然為 0,指示可能進行隨機存取。否則,它將包含最近一次存取的索引值,並單調遞增。
public Locale[] getAvailableLocales()
Locale
所組成的陣列。返回 null
值指示不支持本地化。
如果 availableLocales
實例變數是非 null
的,則預設實作返回該變數的副本,否則返回 null
。
setLocale
的參數的 Locale
所組成的陣列,或者返回 null
。public void setLocale(Locale locale)
ImageReader
的當前 Locale
設置為給定值。值為 null
則移除所有以前的設置值,並指示 reader 應該根據需要對其進行本地化。
locale
- 所需的 Locale
,或者為 null
。
IllegalArgumentException
- 如果 locale
為非 null
,但它不是 getAvailableLocales
返回的值之一。getLocale()
public Locale getLocale()
Locale
,如果沒有設置 Locale,則返回 null
。
Locale
或 null
。setLocale(java.util.Locale)
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
形式的圖像數,如果 allowSearch
為 false
,則返回 -1
,並且將需要搜尋。
IllegalStateException
- 如果沒有設置輸入源,或者已在 seekForwardOnly
設置為 true
的情況下指定了輸入。
IOException
- 如果從輸入源中讀取資訊時發生錯誤。setInput(java.lang.Object, boolean, boolean)
public abstract int getWidth(int imageIndex) throws IOException
如果可以將圖像呈現為使用者指定大小,則此方法將返回預設寬度。
imageIndex
- 要查詢的圖像的索引。
int
形式的圖像寬度。
IllegalStateException
- 如果尚未設置輸入源。
IndexOutOfBoundsException
- 如果所提供的索引超出範圍。
IOException
- 如果從輸入源中讀取寬度資訊時發生錯誤。public abstract int getHeight(int imageIndex) throws IOException
如果可以將圖像呈現為使用者指定大小,則此方法將返回預設高度。
imageIndex
- 要查詢的圖像的索引。
int
形式的圖像高度。
IllegalStateException
- 如果尚未設置輸入源。
IndexOutOfBoundsException
- 如果所提供的索引超出範圍。
IOException
- 如果從輸入源中讀取高度資訊時發生錯誤。public boolean isRandomAccessEasy(int imageIndex) throws IOException
true
。對於大多數壓縮格式(比如 JPEG),此方法應該返回 false
,因為除了感興趣的區域以外,可能還需要對圖像的絕大部分進行解碼。
對於希望更加有效的程序而言,這只是一個提示。所有 reader 必須能夠讀取在 ImageReadParam
中指定的任意區域。
注意,從此方法返回 false
的格式可能仍然允許進行平鋪(例如,JPEG 格式的 Restart Marker),隨機存取對於 tile 可能相當有效。參見
。
isImageTiled
對於保證所有圖像都支持輕鬆隨機存取或者都不支持輕鬆隨機存取的 reader,分別返回 true
或 false
,而不必存取任何圖像資料。在這種情況下,即使輸入源沒有設置或者圖像索引超出範圍,也未必拋出異常。
預設實作返回 false
。
imageIndex
- 要查詢的圖像的索引。
true
。
IllegalStateException
- 如果需要輸入源來確定返回值,但沒有設置輸入源。
IndexOutOfBoundsException
- 如果必須存取某一圖像來確定返回值,但所提供的索引超出範圍。
IOException
- 如果在讀取過程中發生錯誤。public float getAspectRatio(int imageIndex) throws IOException
float
的形式返回給定圖像的高寬比(即寬度除以高度)。對於本來就可以調整大小的圖像,此方法提供了一個在已知所需高度的情況下確定適當寬度的方法,反之亦然。對於不可調整大小的圖像,則使用真實寬度和高度。
預設實作只是返回 (float)getWidth(imageIndex)/getHeight(imageIndex)
。
imageIndex
- 要查詢的圖像的索引。
float
值。
IllegalStateException
- 如果尚未設置輸入源。
IndexOutOfBoundsException
- 如果所提供的索引超出範圍。
IOException
- 如果在讀取過程中發生錯誤。public ImageTypeSpecifier getRawImageType(int imageIndex) throws IOException
ImageTypeSpecifier
,指示最能代表圖像“原始”內部格式的 SampleModel
和 ColorModel
。例如,對於 JPEG 圖像,原始型別可能有一個 YCbCr 顏色空間,即使該圖像在顯示之前會按照慣例被轉換為一個 RGB 顏色空間。返回值還應該套件含在 getImageTypes
返回的值所組成的列表中。
預設實作只返回 getImageType
所提供列表中的第一項。
imageIndex
- 要查詢的圖像的索引。
ImageTypeSpecifier
。
IllegalStateException
- 如果尚未設置輸入源。
IndexOutOfBoundsException
- 如果所提供的索引超出範圍。
IOException
- 如果從輸入源中讀取格式資訊時發生錯誤。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)
public ImageReadParam getDefaultReadParam()
ImageReadParam
物件。所有子類別都應該定義一個用於所有參數的預設值集合,並使用此調用返回這些值。可以在設置輸入源之前調用此方法。
預設實作建構並返回一個新的 ImageReadParam
物件,該物件不允許源進行縮放(也就是說,它返回 new ImageReadParam()
)。
ImageReadParam
物件。public abstract IIOMetadata getStreamMetadata() throws IOException
IIOMetadata
物件,它表示作為一個整體與輸入源關聯的元資料(即不與任何特定圖像關聯);如果 reader 不支持讀取元資料、被設置為忽略元資料,或者沒有元資料可用,則返回 null
。
IIOMetadata
物件或者 null
。
IOException
- 如果在讀取過程中發生錯誤。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
- 如果 formatName
為 null
。
IllegalArgumentException
- 如果 nodeNames
為 null
。
IOException
- 如果在讀取過程中發生錯誤。public abstract IIOMetadata getImageMetadata(int imageIndex) throws IOException
IIOMetadata
物件,如果 reader 不支持讀取元資料、被設置為忽略元資料,或者沒有元資料可用,則返回 null
。
imageIndex
- 其元資料將被獲取的圖像的索引。
IIOMetadata
物件或者 null
。
IllegalStateException
- 如果尚未設置輸入源。
IndexOutOfBoundsException
- 如果所提供的索引超出範圍。
IOException
- 如果在讀取過程中發生錯誤。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
- 如果 formatName
為 null
。
IllegalArgumentException
- 如果 nodeNames
為 null
。
IOException
- 如果在讀取過程中發生錯誤。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
- 如果在讀取過程中發生錯誤。public abstract BufferedImage read(int imageIndex, ImageReadParam param) throws IOException
ImageReadParam
讀取通過索引 imageIndex
指定的物件,並將它作為一個完整的 BufferedImage
返回。
實際返回的 BufferedImage
將使用 getDestination
方法定義的演算法來選擇。
所有已註冊的 IIOReadProgressListener
物件將通過以下方式獲得通知:首先調用其 imageStarted
方法,然後在讀取過程中調用其 imageProgress
方法。最後,將調用其 imageComplete
方法。解碼像素時,IIOReadUpdateListener
物件可以在讀取期間的其他時間更新。最後,IIOReadWarningListener
物件將接收解碼期間發生的所有非致命警告。
要讀取的源 band 和要寫入的目標 band 的集合通過在所提供的 ImageReadParam
上調用 getSourceBands
和 getDestinationBands
確定。如果這些方法返回的陣列的長度不同、源 band 集合包含一個比最大可用源索引更大的索引,或者目標 band 集合包含一個比最大的合法目標索引更大的索引,則拋出 IllegalArgumentException
。
如果所提供的 ImageReadParam
套件含不受此 reader 支持的可選設置值(例如 源呈現大小或任何特定於格式的設置),則將忽略這些設置。
imageIndex
- 將被獲取的圖像的索引。param
- 用來控制讀取過程的 ImageReadParam
,或者為 null
。
BufferedImage
形式的所需圖像部分。
IllegalStateException
- 如果尚未設置輸入源。
IndexOutOfBoundsException
- 如果所提供的索引超出範圍。
IllegalArgumentException
- 如果由 param.getSourceBands
和 param.getDestinationBands
指定的源 band 和目標 band 的集合在長度上不同,或者包含超出範圍的索引。
IllegalArgumentException
- 如果所得圖像的寬度或高度小於 1。
IOException
- 如果讀取期間發生錯誤。public IIOImage readAll(int imageIndex, ImageReadParam param) throws IOException
ImageReadParam
讀取通過索引 imageIndex
指定的圖像,並返回包含圖像、縮略圖和相關圖像元資料的 IIOImage
。
由返回的 IIOImage
實際參考的 BufferedImage
將使用 getDestination
方法定義的演算法來選擇。
所有已註冊的 IIOReadProgressListener
物件將通過以下方式獲得通知:首先調用其 imageStarted
方法,然後在讀取過程中調用其 imageProgress
方法。最後,將調用其 imageComplete
方法。解碼像素時,IIOReadUpdateListener
物件可以在讀取期間的其他時間更新。最後,IIOReadWarningListener
物件將接收解碼期間發生的所有非致命警告。
要讀取的源 band 和要寫入的目標 band 的集合通過在所提供的 ImageReadParam
上調用 getSourceBands
和 getDestinationBands
確定。如果這些方法返回的陣列的長度不同、源 band 集合包含一個比最大可用源索引更大的索引,或者目標 band 集合包含一個比最大的合法目標索引更大的索引,則拋出 IllegalArgumentException
。
無論怎樣設置區域,縮略圖都將以其完整形式返回。
如果所提供的 ImageReadParam
套件含不受此 reader 支持的可選設置值(例如 源呈現大小或任何特定於格式的設置),則將忽略這些設置。
imageIndex
- 將被獲取的圖像的索引。param
- 用來控制讀取過程的 ImageReadParam
,或者為 null
。
IIOImage
,包含所需圖像部分、一個縮略圖集合和關聯的圖像元資料。
IllegalStateException
- 如果尚未設置輸入源。
IndexOutOfBoundsException
- 如果所提供的索引超出範圍。
IllegalArgumentException
- 如果由 param.getSourceBands
和 param.getDestinationBands
指定的源 band 和目標 band 的集合在長度上不同,或者包含超出範圍的索引。
IllegalArgumentException
- 如果所得圖像的寬度或高度小於 1。
IOException
- 如果讀取期間發生錯誤。public Iterator<IIOImage> readAll(Iterator<? extends ImageReadParam> params) throws IOException
IIOImage
物件形式返回包含輸入源中所有圖像、縮略圖和元資料的 Iterator
,從 getMinIndex
給定的索引開始。提供一個套件含 ImageReadParam
物件的 Iterator
,從輸入源中讀取的每個圖像使用一個元素,直到不再有圖像可用。如果 read 參數的 Iterator
超出了元素的範圍,但輸入源中仍然有更多的可用圖像,則將預設 read 參數用於剩餘的圖像。
如果 params
為 null
,則將預設 read 參數用於所有圖像。
由返回的 IIOImage
實際參考的 BufferedImage
將使用 getDestination
方法定義的演算法來選擇。
所有已註冊 IIOReadProgressListener
物件都將通過調用其 sequenceStarted
方法一次獲得通知。然後,對於每個解碼圖像,都將調用 imageStarted
,隨後在讀取過程中調用 imageProgress
,最後調用 imageComplete
。sequenceComplete
方法將在解碼最後一幅圖像後調用。解碼像素時,IIOReadUpdateListener
物件可以在讀取期間的其他時間更新。最後,IIOReadWarningListener
物件將接收解碼期間發生的所有非致命警告。
要讀取的源 band 和要寫入的目標 band 的集合通過在所提供的 ImageReadParam
上調用 getSourceBands
和 getDestinationBands
確定。如果這些方法返回的陣列的長度不同、源 band 集合包含一個比最大可用源索引更大的索引,或者目標 band 集合包含一個比最大的合法目標索引更大的索引,則拋出 IllegalArgumentException
。
無論怎樣設置區域,縮略圖都將以其完整形式返回。
如果任何所提供的 ImageReadParam
都包含不受此 reader 支持的可選設置值(例如 源呈現大小或任何特定於格式的設置),則將忽略這些設置。
params
- 套件含 ImageReadParam
物件的 Iterator
。
IIOImage
的 Iterator
。
IllegalStateException
- 如果尚未設置輸入源。
IllegalArgumentException
- 如果 params
的非 null
元素不是一個 ImageReadParam
。
IllegalArgumentException
- 如果由 param.getSourceBands
和 param.getDestinationBands
指定的源 band 和目標 band 的集合在長度上不同,或者包含超出範圍的索引。
IllegalArgumentException
- 如果所得圖像的寬度或高度小於 1。
IOException
- 如果讀取期間發生錯誤。ImageReadParam
,
IIOImage
public boolean canReadRaster()
Raster
,則返回 true
。如果此方法返回 false
,則調用 readRaster
或 readTileRaster
將拋出 UnsupportedOperationException
。
預設實作返回 false
。
Raster
,則返回 true
。readRaster(int, javax.imageio.ImageReadParam)
,
readTileRaster(int, int, int)
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
public boolean isImageTiled(int imageIndex) throws IOException
true
。
reader 外掛程式可以選擇是否將圖像中出現的 tiling 按其存儲時的原樣公開。甚至可以選擇圖像中沒有顯式存在 tiling 時公開 tiling。通常,只有在對存取單獨的 tile 有利(在速度或空間方面)時才應該公開 tiling。不管 reader 是否公開 tiling,它必須能夠讀取 ImageReadParam
中指定的任意矩形區域。
對於可以保證所有平鋪所有圖像或者不平鋪圖像的 reader,分別返回 true
或 false
,而不必存取任何圖像資料。在這種情況下,即使輸入源沒有設置或者圖像索引超出範圍,也未必拋出異常。
預設實作返回 false
。
imageIndex
- 要查詢的圖像的索引。
true
。
IllegalStateException
- 如果需要輸入源來確定返回值,但沒有設置輸入源。
IndexOutOfBoundsException
- 如果必須存取某一圖像來確定返回值,但所提供的索引超出範圍。
IOException
- 如果在讀取過程中發生錯誤。public int getTileWidth(int imageIndex) throws IOException
預設實作返回 getWidth(imageIndex)
,對於非平鋪圖像也是如此。支持 tiling 的 reader 應該覆寫此方法。
imageIndex
- 要查詢的圖像的索引。
IllegalStateException
- 如果尚未設置輸入源。
IndexOutOfBoundsException
- 如果所提供的索引超出範圍。
IOException
- 如果在讀取過程中發生錯誤。public int getTileHeight(int imageIndex) throws IOException
預設實作返回 getHeight(imageIndex)
,對於非平鋪圖像也是如此。支持 tiling 的 reader 應該覆寫此方法。
imageIndex
- 要查詢的圖像的索引。
IllegalStateException
- 如果尚未設置輸入源。
IndexOutOfBoundsException
- 如果所提供的索引超出範圍。
IOException
- 如果在讀取過程中發生錯誤。public int getTileGridXOffset(int imageIndex) throws IOException
對於 tile 網格 X 偏移量總是具有相同值(通常為 0)的 reader,返回該值,而不必存取任何圖像資料。在這種情況下,即使輸入源沒有設置或者圖像索引超出範圍,也未必拋出異常。
預設實作返回 0,對於大多數格式的非平鋪圖像和平鋪圖像也是如此。支持 tiling、具有非 (0, 0) 偏移量的 reader 應該覆寫此方法。
imageIndex
- 要查詢的圖像的索引。
IllegalStateException
- 如果需要輸入源來確定返回值,但沒有設置輸入源。
IndexOutOfBoundsException
- 如果必須存取某一圖像來確定返回值,但所提供的索引超出範圍。
IOException
- 如果在讀取過程中發生錯誤。public int getTileGridYOffset(int imageIndex) throws IOException
對於 tile 網格 Y 偏移量總是具有相同值(通常為 0)的 reader,返回該值,而不必存取任何圖像資料。在這種情況下,即使輸入源沒有設置或者圖像索引超出範圍,也未必拋出異常。
預設實作返回 0,對於大多數格式的非平鋪圖像和平鋪圖像也是如此。支持 tiling、具有非 (0, 0) 偏移量的 reader 應該覆寫此方法。
imageIndex
- 要查詢的圖像的索引。
IllegalStateException
- 如果需要輸入源來確定返回值,但沒有設置輸入源。
IndexOutOfBoundsException
- 如果必須存取某一圖像來確定返回值,但所提供的索引超出範圍。
IOException
- 如果在讀取過程中發生錯誤。public BufferedImage readTile(int imageIndex, int tileX, int tileY) throws IOException
tileX
和 tileY
參數指示的 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
。
預設實作在 tileX
和 tileY
為 0 時返回整個圖像,其他情況則拋出 IllegalArgumentException
。
imageIndex
- 將被獲取的圖像的索引。tileX
- 將被獲取的 tile 的列索引(從 0 開始)。tileY
- 將被獲取的 tile 的行索引(從 0 開始)。
BufferedImage
形式的 tile。
IllegalStateException
- 如果尚未設置輸入源。
IndexOutOfBoundsException
- 如果 imageIndex
超出範圍。
IllegalArgumentException
- 如果 tile 的索引超出範圍。
IOException
- 如果在讀取過程中發生錯誤。public Raster readTileRaster(int imageIndex, int tileX, int tileY) throws IOException
Raster
物件,不應用任何顏色轉換。應用程序必須確定如何通過其他方法解釋像素資料。
如果
返回 canReadRaster()
false
,則此方法拋出 UnsupportedOperationException
。
預設實作檢查是否支持讀取 Raster
,如果支持且 tileX
和 tileY
為 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
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.getSourceBands
和 param.getDestinationBands
指定的源 band 和目標 band 的集合在長度上不同,或者包含超出範圍的索引。
IllegalArgumentException
- 如果所得圖像的寬度或高度小於 1。
IOException
- 如果讀取期間發生錯誤。public boolean readerSupportsThumbnails()
true
。預設實作返回 false
。
如果此方法返回 false
,hasThumbnails
和 getNumThumbnails
將分別返回 false
和 0
,而 readThumbnail
將拋出 UnsupportedOperationException
(不管其參數如何)。
不支持縮略圖的 reader 不需要實作任何與縮略圖有關的方法。
true
。public boolean hasThumbnails(int imageIndex) throws IOException
true
。如果該格式不支持縮略圖(readerSupportsThumbnails
返回 false
),則無論是否已經設置了輸入源或者 imageIndex
是否在範圍內,其都將將返回 false
。
預設實作在 getNumThumbnails
的返回值大於 0 的情況下返回 true
。
imageIndex
- 要查詢的圖像的索引。
true
。
IllegalStateException
- 如果 reader 支持縮略圖但尚未設置輸入源。
IndexOutOfBoundsException
- 如果 reader 支持縮略圖但 imageIndex
超出範圍。
IOException
- 如果在讀取過程中發生錯誤。public int getNumThumbnails(int imageIndex) throws IOException
readerSupportsThumbnails
返回 false
),則無論是否已經設置了輸入源或者 imageIndex
是否在範圍內,其都將將返回 0
。
預設實作返回 0,不檢查其參數。
imageIndex
- 要查詢的圖像的索引。
IllegalStateException
- 如果 reader 支持縮略圖但尚未設置輸入源。
IndexOutOfBoundsException
- 如果 reader 支持縮略圖但 imageIndex
超出範圍。
IOException
- 如果在讀取過程中發生錯誤。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
- 如果在讀取過程中發生錯誤。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
- 如果在讀取過程中發生錯誤。public BufferedImage readThumbnail(int imageIndex, int thumbnailIndex) throws IOException
BufferedImage
形式返回通過索引 thumbnailIndex
指定的縮略圖預覽圖像,其與通過索引 ImageIndex
指定的圖像關聯。
所有已註冊 IIOReadProgressListener
物件都將通過調用其 thumbnailStarted
、thumbnailProgress
和 thumbnailComplete
方法獲得通知。
如果 reader 不支持縮略圖(readerSupportsThumbnails
返回 false
),則無論是否已經設置了輸入源或者索引是否在範圍內,其都將拋出 UnsupportedOperationException
。
預設的實作拋出 UnsupportedOperationException
。
imageIndex
- 將被獲取的圖像的索引。thumbnailIndex
- 將被獲取的縮略圖的索引。
BufferedImage
形式的所需縮略圖。
UnsupportedOperationException
- 如果不支持縮略圖。
IllegalStateException
- 如果尚未設置輸入源。
IndexOutOfBoundsException
- 如果任何一個所提供的索引超出範圍。
IOException
- 如果在讀取過程中發生錯誤。public void abort()
reader 應該在開始每個讀取操作時調用 clearAbortRequest
,並在讀取期間定期輪詢 abortRequested
的值。
protected boolean abortRequested()
clearAbortRequest
時起,已經請求了中止當前讀取操作,則返回 true
。
true
。abort()
,
clearAbortRequest()
protected void clearAbortRequest()
abortRequested
將返回 false
。
abort()
,
abortRequested()
public void addIIOReadWarningListener(IIOReadWarningListener listener)
IIOReadWarningListener
添加到已註冊的警告偵聽器的列表中。如果 listener
為 null
,則不會拋出任何異常並且不執行任何操作。將本地化發送到給定偵聽器的訊息(如果可能)以比對當前 Locale
。如果沒有設置 Locale
,則可將警告訊息本地化為適合 reader 的形式。
listener
- 要註冊的 IIOReadWarningListener
。removeIIOReadWarningListener(javax.imageio.event.IIOReadWarningListener)
public void removeIIOReadWarningListener(IIOReadWarningListener listener)
IIOReadWarningListener
。如果以前沒有註冊偵聽器,或者 listener
為 null
,則不會拋出任何異常並且不執行任何操作。
listener
- 要取消註冊的 IIOReadWarningListener。addIIOReadWarningListener(javax.imageio.event.IIOReadWarningListener)
public void removeAllIIOReadWarningListeners()
IIOReadWarningListener
物件。
預設實作將 warningListeners
和 warningLocales
實例變數設置為 null
。
public void addIIOReadProgressListener(IIOReadProgressListener listener)
IIOReadProgressListener
添加到已註冊的進度偵聽器列表中。如果 listener
為 null
,則不會拋出任何異常並且不執行任何操作。
listener
- 要註冊的 IIOReadProgressListener。removeIIOReadProgressListener(javax.imageio.event.IIOReadProgressListener)
public void removeIIOReadProgressListener(IIOReadProgressListener listener)
IIOReadProgressListener
。如果以前沒有註冊偵聽器,或者 listener
為 null
,則不會拋出任何異常並且不執行任何操作。
listener
- 要取消註冊的 IIOReadProgressListener。addIIOReadProgressListener(javax.imageio.event.IIOReadProgressListener)
public void removeAllIIOReadProgressListeners()
IIOReadProgressListener
物件。
預設實作將 progressListeners
實例變數設置為 null
。
public void addIIOReadUpdateListener(IIOReadUpdateListener listener)
IIOReadUpdateListener
添加到已註冊的更新偵聽器列表中。如果 listener
為 null
,則不會拋出任何異常並且不執行任何操作。在解碼圖像和縮略圖時,偵聽器將接收像素更新的通知,該通知中包括逐步傳遞的起始處和結束處。
如果不存在更新偵聽器,則 reader 可以選擇對目標圖像和/或縮略圖的像素執行較少的更新,這能促使更加有效的解碼。
例如,在逐步 JPEG 解碼過程中,每個傳遞都包含對一個係數集合的更新資料,如果偵聽器存在,則必須將這些係數變換成像素值並轉換為用於每個傳遞的 RGB 顏色空間。如果不存在偵聽器,則可以累計這些係數,並只變換最終結果和轉換顏色一次。
無論是否執行中間的更新,解碼的最終結果都相同。因此,如果只需要最終圖像,則最好不註冊任何 IIOReadUpdateListener
。通常,在通過與本地 CPU 處理相比非常慢的網路連接獲取圖像時,逐步更新是最有效的;而通過快速連接時,逐步更新實際上會降低圖像的顯示速度。
listener
- 要註冊的 IIOReadUpdateListener。removeIIOReadUpdateListener(javax.imageio.event.IIOReadUpdateListener)
public void removeIIOReadUpdateListener(IIOReadUpdateListener listener)
IIOReadUpdateListener
。如果以前沒有註冊偵聽器,或者 listener
為 null
,則不會拋出任何異常並且不執行任何操作。
listener
- 要取消註冊的 IIOReadUpdateListener。addIIOReadUpdateListener(javax.imageio.event.IIOReadUpdateListener)
public void removeAllIIOReadUpdateListeners()
IIOReadUpdateListener
物件。
預設實作將 updateListeners
實例變數設置為 null
。
protected void processSequenceStarted(int minIndex)
IIOReadProgressListener
的 sequenceStarted
方法向其廣播圖像讀取序列的起始處。子類別可以將此方法用作一個便捷方法。
minIndex
- 將讀取的最低索引。protected void processSequenceComplete()
IIOReadProgressListener
的 sequenceComplete
方法向其廣播圖像讀取序列的完成。子類別可以將此方法用作一個便捷方法。
protected void processImageStarted(int imageIndex)
IIOReadProgressListener
的 imageStarted
方法向其廣播圖像讀取起始處。子類別可以將此方法用作一個便捷方法。
imageIndex
- 即將讀取的圖像的索引。protected void processImageProgress(float percentageDone)
IIOReadProgressListener
的 imageProgress
方法向其廣播圖像完成的當前百分比。子類別可以將此方法用作一個便捷方法。
percentageDone
- float
值形式的當前完成百分比。protected void processImageComplete()
IIOReadProgressListener
的 imageComplete
方法向其廣播圖像讀取的完成。子類別可以將此方法用作一個便捷方法。
protected void processThumbnailStarted(int imageIndex, int thumbnailIndex)
IIOReadProgressListener
的 thumbnailStarted
方法向其廣播縮略圖讀取的起始處。子類別可以將此方法用作一個便捷方法。
imageIndex
- 與該縮略圖關聯的圖像的索引。thumbnailIndex
- 縮略圖的索引。protected void processThumbnailProgress(float percentageDone)
IIOReadProgressListener
的 thumbnailProgress
方法向其廣播縮略圖完成的當前百分比。子類別可以將此方法用作一個便捷方法。
percentageDone
- float
值形式的當前完成百分比。protected void processThumbnailComplete()
IIOReadProgressListener
的 thumbnailComplete
方法向其廣播縮略圖讀取的完成。子類別可以將此方法用作一個便捷方法。
protected void processReadAborted()
IIOReadProgressListener
的 readAborted
方法向其廣播讀取已經中止。子類別可以將此方法用作一個便捷方法。
protected void processPassStarted(BufferedImage theImage, int pass, int minPass, int maxPass, int minX, int minY, int periodX, int periodY, int[] bands)
IIOReadUpdateListener
的 passStarted
方法向其廣播逐步傳遞的開始。子類別可以將此方法用作一個便捷方法。
theImage
- 將被更新的 BufferedImage
。pass
- 當前傳遞的索引,從 0 開始。minPass
- 將被解碼的第一個傳遞的索引。maxPass
- 將要解碼的最後一個傳遞的索引。minX
- 套件含在該傳遞中的左上角像素的 X 坐標。minY
- 套件含在該傳遞中的左上角像素的 Y 坐標。periodX
- 像素間的水平間距。periodY
- 像素間的垂直間距。bands
- 指示受影響目標 band 集合的 int
陣列。protected void processImageUpdate(BufferedImage theImage, int minX, int minY, int width, int height, int periodX, int periodY, int[] bands)
IIOReadUpdateListener
的 imageUpdate
方法向其廣播樣本集合的更新。子類別可以將此方法用作一個便捷方法。
theImage
- 將被更新的 BufferedImage
。minX
- 套件含在該傳遞中的左上角像素的 X 坐標。minY
- 套件含在該傳遞中的左上角像素的 Y 坐標。width
- 將被更新的區域的總寬度,包括將跳過的像素(如果 periodX > 1
)。height
- 將被更新的區域的總高度,包括將跳過的像素(如果 periodY > 1
)。periodX
- 像素間的水平間距。periodY
- 像素間的垂直間距。bands
- 指示受影響目標 band 集合的 int
陣列。protected void processPassComplete(BufferedImage theImage)
IIOReadUpdateListener
的 passComplete
方法向其廣播逐步傳遞的結束。子類別可以將此方法用作一個便捷方法。
theImage
- 將被更新的 BufferedImage
。protected void processThumbnailPassStarted(BufferedImage theThumbnail, int pass, int minPass, int maxPass, int minX, int minY, int periodX, int periodY, int[] bands)
IIOReadUpdateListener
的 thumbnailPassStarted
方法向其廣播縮略圖逐步傳遞的開始。子類別可以將此方法用作一個便捷方法。
theThumbnail
- 將被更新的 BufferedImage
縮略圖。pass
- 當前傳遞的索引,從 0 開始。minPass
- 將被解碼的第一個傳遞的索引。maxPass
- 將要解碼的最後一個傳遞的索引。minX
- 套件含在該傳遞中的左上角像素的 X 坐標。minY
- 套件含在該傳遞中的左上角像素的 Y 坐標。periodX
- 像素間的水平間距。periodY
- 像素間的垂直間距。bands
- 指示受影響目標 band 集合的 int
陣列。protected void processThumbnailUpdate(BufferedImage theThumbnail, int minX, int minY, int width, int height, int periodX, int periodY, int[] bands)
IIOReadUpdateListener
的 thumbnailUpdate
方法向其廣播縮略圖圖像中樣本集合的更新。子類別可以將此方法用作一個便捷方法。
theThumbnail
- 將被更新的 BufferedImage
縮略圖。minX
- 套件含在該傳遞中的左上角像素的 X 坐標。minY
- 套件含在該傳遞中的左上角像素的 Y 坐標。width
- 將被更新的區域的總寬度,包括將跳過的像素(如果 periodX > 1
)。height
- 將被更新的區域的總高度,包括將跳過的像素(如果 periodY > 1
)。periodX
- 像素間的水平間距。periodY
- 像素間的垂直間距。bands
- 指示受影響目標 band 集合的 int
陣列。protected void processThumbnailPassComplete(BufferedImage theThumbnail)
IIOReadUpdateListener
的 thumbnailPassComplete
方法向其廣播縮略圖逐步傳遞的結束。子類別可以將此方法用作一個便捷方法。
theThumbnail
- 將被更新的 BufferedImage
縮略圖。protected void processWarningOccurred(String warning)
IIOReadWarningListener
的 warningOccurred
方法向其廣播警告訊息。子類別可以將此方法用作一個便捷方法。
warning
- 要發送的警告訊息。
IllegalArgumentException
- 如果 warning
為 null
。protected void processWarningOccurred(String baseName, String keyword)
ResourceBundle
的字元串調用所有已註冊 IIOReadWarningListener
的 warningOccurred
方法向其廣播本地化警告訊息。子類別可以將此方法用作一個便捷方法。
baseName
- 套件含本地化警告訊息的 ResourceBundle
集合的基本名稱。keyword
- 用來搜尋 ResourceBundle
集合中的警告訊息的關鍵字。
IllegalArgumentException
- 如果 baseName
為 null
。
IllegalArgumentException
- 如果 keyword
為 null
。
IllegalArgumentException
- 如果無法定位合適的 ResourceBundle
。
IllegalArgumentException
- 如果在定位的 ResourceBundle
中無法找到指定的資源。
IllegalArgumentException
- 如果從 ResourceBundle
中獲取到的物件不是 String
。public void reset()
ImageReader
恢復到其初始狀態。
預設實作調用 setInput(null, false)
、setLocale(null)
、removeAllIIOReadUpdateListeners()
、removeAllIIOReadWarningListeners()
、removeAllIIOReadProgressListeners()
和 clearAbortRequest
。
public void dispose()
finalize
除外)所產生的結果都是不確定的。
應用程序在確信不再使用此 ImageReader
時,調用此方法非常重要。否則,reader 將繼續無限期地佔用這些資源。
在父級類別中,此方法的預設實作不執行任何操作。子類別實作應該確保所有資源(特別是本機資源)被釋放。
protected static Rectangle getSourceRegion(ImageReadParam param, int srcWidth, int srcHeight)
ImageReadParam
中對偏移量設置進行二次取樣。實際二次取樣因子、目標大小和目標偏移量都沒有 考慮,因此必須進行進一步的裁剪。computeRegions
方法執行所有必要的裁剪。
param
- 將使用的 ImageReadParam
,或者為 null
。srcWidth
- 源圖像的寬度。srcHeight
- 源圖像的高度。
Rectangle
形式的源區域。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
- 如果 srcRegion
為 null
。
IllegalArgumentException
- 如果 dstRegion
為 null
。
IllegalArgumentException
- 如果所得到的源區域或目標區域為空。protected static void checkReadParamBandSettings(ImageReadParam param, int numSrcBands, int numDstBands)
ImageReadParam
的源和目標 band 設置的有效性的實用方法。只要 reader 一確定輸入串流中存在的目標圖像的 band 數,以及將寫入的目標圖像的 band 數,就可以調用此方法。
該方法根據參數使用 getSourceBands
和 getDestinationBands
方法獲取源和目標 band 設置值陣列(如果 param
為 null
,則將其視為 null
)。如果源 band 設置值陣列為 null
,則認為其等同於陣列 { 0, 1, ..., numSrcBands - 1 }
,對於目標 band 設置值陣列情況類似。
然後該方法測試兩個陣列的長度是否相等,以及是否兩個陣列都沒有包含大於最大可用 band 索引的值。
任何失敗都將導致拋出 IllegalArgumentException
;而成功則導致方法正常返回。
param
- 將用來讀取圖像 ImageReadParam
。numSrcBands
- 輸入源中存在的圖像的 band 數。numDstBands
- 將被寫入的目標圖像中的 band 數。
IllegalArgumentException
- 如果 param
套件含源和/或目標 band 子集的無效規範。protected static BufferedImage getDestination(ImageReadParam param, Iterator<ImageTypeSpecifier> imageTypes, int width, int height) throws IIOException
BufferedImage
。通過檢查所提供的 ImageReadParam
(如果非 null
)來確定圖像;如果其 getDestination
方法返回一個非 null
值,則返回該圖像。否則,調用 param.getDestinationType
方法來確定是否指定了某一特定圖像型別。如果已指定,則在檢查其是否等於 imageTypes
中包含的型別之一後使用所返回的 ImageTypeSpecifier
。
如果 param
為 null
或者上述步驟沒有產生一幅圖像或 ImageTypeSpecifier
,則使用從 imageTypes
參數獲得的第一個值。通常,調用者會將 imageTypes
設置為 getImageTypes(imageIndex)
的值。
接下來,通過調用 computeRegions
確定圖像的維數。將被解碼的圖像的實際寬度和高度以 width
和 height
參數的形式傳入。
param
- 將用來獲得目標圖像或圖像型別的 ImageReadParam
,或者為 null
。imageTypes
- 指示合法圖像型別的 ImageTypeSpecifier
的 Iterator
(預設型別最先使用)。width
- 開始解碼的圖像或 tile 的實際寬度。height
- 開始解碼的圖像或 tile 的實際高度。
BufferedImage
。
IIOException
- 如果由 param
指定的 ImageTypeSpecifier
與來自 imageTypes
的任何合法型別不比對。
IllegalArgumentException
- 如果 imageTypes
為 null
或空,或者從中獲取到的物件型別不是 ImageTypeSpecifier
。
IllegalArgumentException
- 如果得到的圖像寬度或高度小於 1。
IllegalArgumentException
- 如果 width
和 height
的值大於 Integer.MAX_VALUE
。
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。