JavaTM 2 Platform
Standard Ed. 6

javax.imageio.plugins.jpeg
類別 JPEGImageWriteParam

java.lang.Object
  繼承者 javax.imageio.IIOParam
      繼承者 javax.imageio.ImageWriteParam
          繼承者 javax.imageio.plugins.jpeg.JPEGImageWriteParam

public class JPEGImageWriteParam
extends ImageWriteParam

此類別添加了使用內置 JPEG writer 外掛程式時設置 JPEG 量化表和 Huffman 表以及請求為圖像計算最佳 Huffman 表的能力。此類別的實例將從內置 ImageWritergetDefaultImageWriteParam 方法返回。

這些新增功能的主要目的是允許在編碼簡寫串流中使用表的規範。內置 JPEG writer 還將接受普通 ImageWriteParam,在這種情況下,writer 將在內部建構所需的表。

無論是哪種情況,在 ImageWriteParam 中設置的質量對於底層資源庫而言意義都是相同的:1.00 表示全部為 1 的量化表,0.75 表示“標準”量化表(即視覺上無損失量化表),而 0.00 則表示全部為 255 的量化表。

簡寫串流的表常常通過首先寫入僅包含表的簡寫串流來指定,在有些應用程序中,這些表是提前準備好的。此類別允許直接從客戶端程式碼指定表。

通常,表是在傳入 writer 的 IIOMetadata 物件中指定的,這些物件中包括的所有表都會寫入串流中。如果沒有在元資料中指定表,則寫入簡寫串流。如果元資料中不包括任何表並且也沒有在 JPEGImageWriteParam 中指定任何表,則使用“標準”視覺上無損失表編碼簡寫串流。當某個簡寫串流必須在沒有首先向串流中寫入任何表的情況下進行寫入時,需要使用此類別來指定表。要使用此類別,傳入 writer 的元資料物件不能包含任何表,並且不能提供任何串流元資料。有關預設表的更多資訊,請參見 JPEGQTableJPEGHuffmanTable

writer 的 getDefaultWriteParam 方法返回的預設 JPEGImageWriteParam 不包含任何表。預設表包括在 writer 返回的預設 IIOMetadata 物件中。

如果元資料封包含表,則忽略 JPEGImageWriteParam 中給定的表。此外,寫入一組表後,只有元資料中的表可以覆寫它們來進行後續寫入,不管寫入相同的串流還是不同的串流。為了使用此類別指定新表,必須調用 writer 的 reset 方法。

有關內置 JPEG 外掛程式的操作的更新資訊,請參見 JPEG metadata format specification and usage notes


欄位摘要
 
從類別 javax.imageio.ImageWriteParam 繼承的欄位
canOffsetTiles, canWriteCompressed, canWriteProgressive, canWriteTiles, compressionMode, compressionQuality, compressionType, compressionTypes, locale, MODE_COPY_FROM_METADATA, MODE_DEFAULT, MODE_DISABLED, MODE_EXPLICIT, preferredTileSizes, progressiveMode, tileGridXOffset, tileGridYOffset, tileHeight, tileWidth, tilingMode, tilingSet
 
從類別 javax.imageio.IIOParam 繼承的欄位
controller, defaultController, destinationOffset, destinationType, sourceBands, sourceRegion, sourceXSubsampling, sourceYSubsampling, subsamplingXOffset, subsamplingYOffset
 
建構子摘要
JPEGImageWriteParam(Locale locale)
          建構一個 JPEGImageWriteParam
 
方法摘要
 boolean areTablesSet()
          如果表是當前設置的,則返回 true
 JPEGHuffmanTable[] getACHuffmanTables()
          返回最近一次調用 setEncodeTables 設置的 AC Huffman 表所組成陣列的一個副本;如果當前沒有設置表,則返回 null
 String[] getCompressionQualityDescriptions()
          返回一個 String 陣列,可作為使用者介面的一部分與 getCompressionQualityValues 一起使用,以設置或顯示壓縮質量級別。
 float[] getCompressionQualityValues()
          返回一個 float 陣列,可作為使用者介面的一部分與 getCompressionQualityDescriptions 一起使用,以設置或顯示壓縮質量級別。
 JPEGHuffmanTable[] getDCHuffmanTables()
          返回最近一次調用 setEncodeTables 設置的 DC Huffman 表所組成陣列的一個副本;如果當前沒有設置表,則返回 null
 boolean getOptimizeHuffmanTables()
          返回傳入對 setOptimizeHuffmanTables 的最近一次調用中的值;如果從未調用 setOptimizeHuffmanTables,則返回 false
 JPEGQTable[] getQTables()
          返回最近一次調用 setEncodeTables 設置的量化表所組成陣列的一個副本;如果當前沒有設置表,則返回 null
 boolean isCompressionLossless()
          返回 false,因為 JPEG 外掛程式僅支持有損失的壓縮。
 void setEncodeTables(JPEGQTable[] qTables, JPEGHuffmanTable[] DCHuffmanTables, JPEGHuffmanTable[] ACHuffmanTables)
          設置量化表和 Huffman 表以在編碼簡寫串流中使用。
 void setOptimizeHuffmanTables(boolean optimize)
          告知 writer 是否作為寫入過程的一部分為圖像產生最佳 Huffman 表。
 void unsetCompression()
          移除所有以前的壓縮質量設置值。
 void unsetEncodeTables()
          移除當前設置的所有量化表和 Huffman 表。
 
從類別 javax.imageio.ImageWriteParam 繼承的方法
canOffsetTiles, canWriteCompressed, canWriteProgressive, canWriteTiles, getBitRate, getCompressionMode, getCompressionQuality, getCompressionType, getCompressionTypes, getLocale, getLocalizedCompressionTypeName, getPreferredTileSizes, getProgressiveMode, getTileGridXOffset, getTileGridYOffset, getTileHeight, getTileWidth, getTilingMode, setCompressionMode, setCompressionQuality, setCompressionType, setProgressiveMode, setTiling, setTilingMode, unsetTiling
 
從類別 javax.imageio.IIOParam 繼承的方法
activateController, getController, getDefaultController, getDestinationOffset, getDestinationType, getSourceBands, getSourceRegion, getSourceXSubsampling, getSourceYSubsampling, getSubsamplingXOffset, getSubsamplingYOffset, hasController, setController, setDestinationOffset, setDestinationType, setSourceBands, setSourceRegion, setSourceSubsampling
 
從類別 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

建構子詳細資訊

JPEGImageWriteParam

public JPEGImageWriteParam(Locale locale)
建構一個 JPEGImageWriteParam。不支持平鋪。支持逐步編碼。預設的逐步網要為 MODE_DISABLED。支持名為 "JPEG" 的單個壓縮形式。預設的壓縮質量為 0.75。

參數:
locale - 要由父級類別用於本地化壓縮型別名稱和質量描述的 Locale,或者為 null
方法詳細資訊

unsetCompression

public void unsetCompression()
移除所有以前的壓縮質量設置值。

預設實作將壓縮質量重置為 0.75F

覆寫:
類別 ImageWriteParam 中的 unsetCompression
拋出:
IllegalStateException - 如果壓縮網要不是 MODE_EXPLICIT
另請參見:
ImageWriteParam.setCompressionType(java.lang.String), ImageWriteParam.setCompressionQuality(float)

isCompressionLossless

public boolean isCompressionLossless()
返回 false,因為 JPEG 外掛程式僅支持有損失的壓縮。

覆寫:
類別 ImageWriteParam 中的 isCompressionLossless
返回:
false
拋出:
IllegalStateException - 如果壓縮網要不是 MODE_EXPLICIT

getCompressionQualityDescriptions

public String[] getCompressionQualityDescriptions()
從類別 ImageWriteParam 複製的描述
返回一個 String 陣列,可作為使用者介面的一部分與 getCompressionQualityValues 一起使用,以設置或顯示壓縮質量級別。索引為 iString 提供對質量級別範圍的描述,該範圍在 getCompressionQualityValues[i]getCompressionQualityValues[i + 1] 之間。注意,從 getCompressionQualityValues 返回的陣列長度將總是大於從 getCompressionQualityDescriptions 返回的陣列長度。

例如,字元串 "Good"、"Better" 和 "Best" 可以與範圍 [0, .33)[.33, .66)[.66, 1.0] 關聯。在這種情況下,getCompressionQualityDescriptions 將返回 { "Good", "Better", "Best" }getCompressionQualityValues 將返回 { 0.0F, .33F, .66F, 1.0F }

如果沒有描述可用,則返回 null。如果從 getCompressionQualityValues 返回 null,則此方法也必須返回 null

應該為由 getLocale 返回的 Locale 將描述本地化,如果 Locale 為非 null 的話。

如果有多個壓縮型別,但沒有設置任何一種壓縮型別,則拋出 IllegalStateException

預設實作檢查是否支持壓縮,以及壓縮網要是否為 MODE_EXPLICIT。如果是這樣,而 getCompressionTypes()nullgetCompressionType() 為非 null,則返回 null

覆寫:
類別 ImageWriteParam 中的 getCompressionQualityDescriptions
返回:
包含壓縮質量級別的本地化描述的 String 陣列。
另請參見:
ImageWriteParam.getCompressionQualityValues()

getCompressionQualityValues

public float[] getCompressionQualityValues()
從類別 ImageWriteParam 複製的描述
返回一個 float 陣列,可作為使用者介面的一部分與 getCompressionQualityDescriptions 一起使用,以設置或顯示壓縮質量級別。有關更多資訊,請參閱 getCompressionQualityDescriptions

如果沒有描述可用,則返回 null。如果從 getCompressionQualityDescriptions 返回 null,則此方法也必須返回 null

如果有多個壓縮型別,但沒有設置任何一種壓縮型別,則拋出 IllegalStateException

預設實作檢查是否支持壓縮,以及壓縮網要是否為 MODE_EXPLICIT。如果是這樣,而 getCompressionTypes()nullgetCompressionType() 為非 null,則返回 null

覆寫:
類別 ImageWriteParam 中的 getCompressionQualityValues
返回:
一個 float 陣列,指示 getCompressionQualityDescriptions 中的 String 描述的壓縮質量級別之間的分界線。
另請參見:
ImageWriteParam.getCompressionQualityDescriptions()

areTablesSet

public boolean areTablesSet()
如果表是當前設置的,則返回 true

返回:
如果表存在,則返回 true

setEncodeTables

public void setEncodeTables(JPEGQTable[] qTables,
                            JPEGHuffmanTable[] DCHuffmanTables,
                            JPEGHuffmanTable[] ACHuffmanTables)
設置量化表和 Huffman 表以在編碼簡寫串流中使用。每個型別可能至多有 4 個表。如果在元資料中指定了表,則忽略這些表。所有參數都必須為非 null。兩個 Huffman 表的陣列必須具有相同的元素數。假定元資料中的幀和掃瞄標題的表說明符等效於這些陣列中的索引。使用此方法複製參數陣列。

參數:
qTables - 量化表物件所組成的陣列。
DCHuffmanTables - Huffman 表物件所組成的陣列。
ACHuffmanTables - Huffman 表物件所組成的陣列。
拋出:
IllegalArgumentException - 如果這些參數中的任何一個為 null 或者具有 4 個以上的元素,或者 DC 和 AC 的表數不同。
另請參見:
unsetEncodeTables()

unsetEncodeTables

public void unsetEncodeTables()
移除當前設置的所有量化表和 Huffman 表。

另請參見:
setEncodeTables(javax.imageio.plugins.jpeg.JPEGQTable[], javax.imageio.plugins.jpeg.JPEGHuffmanTable[], javax.imageio.plugins.jpeg.JPEGHuffmanTable[])

getQTables

public JPEGQTable[] getQTables()
返回最近一次調用 setEncodeTables 設置的量化表所組成陣列的一個副本;如果當前沒有設置表,則返回 null

返回:
JPEGQTable 物件所組成的陣列;或者 null
另請參見:
setEncodeTables(javax.imageio.plugins.jpeg.JPEGQTable[], javax.imageio.plugins.jpeg.JPEGHuffmanTable[], javax.imageio.plugins.jpeg.JPEGHuffmanTable[])

getDCHuffmanTables

public JPEGHuffmanTable[] getDCHuffmanTables()
返回最近一次調用 setEncodeTables 設置的 DC Huffman 表所組成陣列的一個副本;如果當前沒有設置表,則返回 null

返回:
JPEGHuffmanTable 物件所組成的陣列;或者 null
另請參見:
setEncodeTables(javax.imageio.plugins.jpeg.JPEGQTable[], javax.imageio.plugins.jpeg.JPEGHuffmanTable[], javax.imageio.plugins.jpeg.JPEGHuffmanTable[])

getACHuffmanTables

public JPEGHuffmanTable[] getACHuffmanTables()
返回最近一次調用 setEncodeTables 設置的 AC Huffman 表所組成陣列的一個副本;如果當前沒有設置表,則返回 null

返回:
JPEGHuffmanTable 物件所組成的陣列;或者 null
另請參見:
setEncodeTables(javax.imageio.plugins.jpeg.JPEGQTable[], javax.imageio.plugins.jpeg.JPEGHuffmanTable[], javax.imageio.plugins.jpeg.JPEGHuffmanTable[])

setOptimizeHuffmanTables

public void setOptimizeHuffmanTables(boolean optimize)
告知 writer 是否作為寫入過程的一部分為圖像產生最佳 Huffman 表。預設值為 false。如果將此標誌設置為 true,則其覆寫在元資料中指定的所有表。注意,這意味著通過將此標誌設置為 true 而寫入的任何圖像總是包含 Huffman 表。

參數:
optimize - 一個 boolean 值,指示是否在寫入時產生最佳 Huffman 表。
另請參見:
getOptimizeHuffmanTables()

getOptimizeHuffmanTables

public boolean getOptimizeHuffmanTables()
返回傳入對 setOptimizeHuffmanTables 的最近一次調用中的值;如果從未調用 setOptimizeHuffmanTables,則返回 false

返回:
如果 writer 將產生最佳 Huffman 表,則返回 true
另請參見:
setOptimizeHuffmanTables(boolean)

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

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