[Image] 使用JAI將實現RenderedImage接口的圖像對象序列化
我們都知道,圖像對象可以編碼成指定圖像格式文件保存在硬盤上,需要時再對其進行解碼讀入內存。但是除了這樣還有別的辦法可以將圖像對象保存在硬盤上嗎?熟悉Java I/O 的人也許可以想到采用對象序列化(Object serialization)試一試,很好,但是如果你研究了 BufferedImage?類的結構后就會大失所望(至少當時我是這樣)。
BufferedImage?提供一般圖像管理。BufferedImage 對象包括另外兩個對象:Raster 和 ColorModel。Raster 對象包含另外兩個對象:DataBuffer 和 SampleModel。不幸的是,他們都沒有實現序列化所必需的 Serializable 接口,所以無法直接對他們進行對象序列化。
我在學習 JAI 的時候發現了 javax.media.jai.remote 包里有一個類 SerializableRenderedImage,這個類實現了RenderedImage, Serializable 接口,可以將 RanderedImage 對象作為構造函數的參數實例化一個可以序列化的圖像對象。
public final class SerializableRenderedImage
SerializableRenderedImage(RenderedImage?source) ??????????Constructs a SerializableRenderedImage wrapper for a RenderedImage source. |
SerializableRenderedImage(RenderedImage?source, boolean?useDeepCopy) ??????????Constructs a SerializableRenderedImage wrapper for a RenderedImage source. |
SerializableRenderedImage(RenderedImage?source, boolean?useDeepCopy, OperationRegistry?registry, String?formatName, TileCodecParameterList?encodingParam, TileCodecParameterList?decodingParam) ??????????Constructs a SerializableRenderedImage wrapper for a RenderedImage source. |
查看JDK的文檔可以知道無論 Java 2D 中的 BufferedImage 還是 JAI 中的 PlanarImage 都實現自 RenderedImage 接口,也就是說所有實現自 RenderedImage 接口的對象均可作為參數包裝出一個 SerializableRenderedImage 類型對象,將其序列化。
下面是一個簡單的例子說明了這個類的使用方法:







































posted on 2005-10-18 17:36 leon 閱讀(2835) 評論(1) 編輯 收藏 所屬分類: Java Media