Do you drink java?



                像寫情書一樣coding

           

          [Image] 使用JAI將實(shí)現(xiàn)RenderedImage接口的圖像對(duì)象序列化

          我們都知道,圖像對(duì)象可以編碼成指定圖像格式文件保存在硬盤上,需要時(shí)再對(duì)其進(jìn)行解碼讀入內(nèi)存。但是除了這樣還有別的辦法可以將圖像對(duì)象保存在硬盤上嗎?熟悉Java I/O 的人也許可以想到采用對(duì)象序列化(Object serialization)試一試,很好,但是如果你研究了 BufferedImage?類的結(jié)構(gòu)后就會(huì)大失所望(至少當(dāng)時(shí)我是這樣)。
          BufferedImage.jpg

          BufferedImage?提供一般圖像管理。BufferedImage 對(duì)象包括另外兩個(gè)對(duì)象:Raster 和 ColorModel。Raster 對(duì)象包含另外兩個(gè)對(duì)象:DataBuffer 和 SampleModel。不幸的是,他們都沒有實(shí)現(xiàn)序列化所必需的 Serializable 接口,所以無法直接對(duì)他們進(jìn)行對(duì)象序列化。

          我在學(xué)習(xí) JAI 的時(shí)候發(fā)現(xiàn)了 javax.media.jai.remote 包里有一個(gè)類 SerializableRenderedImage,這個(gè)類實(shí)現(xiàn)了RenderedImage, Serializable 接口,可以將 RanderedImage 對(duì)象作為構(gòu)造函數(shù)的參數(shù)實(shí)例化一個(gè)可以序列化的圖像對(duì)象。

          javax.media.jai.remote.SerializableRenderedImage

          public final class SerializableRenderedImage
          extends Object
          implements RenderedImage, Serializable

          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 都實(shí)現(xiàn)自 RenderedImage 接口,也就是說所有實(shí)現(xiàn)自 RenderedImage 接口的對(duì)象均可作為參數(shù)包裝出一個(gè) SerializableRenderedImage 類型對(duì)象,將其序列化。

          下面是一個(gè)簡單的例子說明了這個(gè)類的使用方法:

          import?java.io.*;
          import?javax.media.jai.remote.*;

          import?java.awt.image.*;

          public?class?SomeSerializableClass
          ????
          implements?Serializable?{
          ??
          protected?transient?RenderedImage?image;

          ??
          //?Fields?omitted.

          ??
          public?SomeSerializableClass(RenderedImage?image)?{
          ????
          this.image?=?image;
          ??}


          ??
          //?Methods?omitted.

          ??
          //?Serialization?method.
          ??private?void?writeObject(ObjectOutputStream?out)?throws?IOException?{
          ????out.defaultWriteObject();
          ????out.writeObject(
          new?SerializableRenderedImage(image,?true));
          ??}


          ??
          //?Deserialization?method.
          ??private?void?readObject(ObjectInputStream?in)?throws?IOException,
          ??????ClassNotFoundException?
          {
          ????in.defaultReadObject();
          ????image?
          =?(RenderedImage)?in.readObject();
          ??}

          }

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

          評(píng)論

          # re: 將 RenderedImage 對(duì)象序列化 2005-10-18 19:32 pudgy

          不錯(cuò)阿,感謝了
            回復(fù)  更多評(píng)論   


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           

          導(dǎo)航

          統(tǒng)計(jì)

          公告

          DSC_0106.jpg
          本博客已經(jīng)搬家到CSDN
          http://blog.csdn.net/chenweionline




          常用鏈接

          留言簿(5)

          隨筆分類

          隨筆檔案

          About Technology

          My Favorite Website

          搜索

          積分與排名

          最新評(píng)論

          • 1.?re: 胃痙攣
          • 兄弟們你們都做胃鏡了嗎開的啥藥?有什么養(yǎng)胃秘方啊?請(qǐng)賜教啊!
          • --我也進(jìn)來了
          • 2.?re: 胃痙攣
          • @痛啊
            我感覺比生孩子還疼,生孩子還能有意識(shí)呢!這種疼還叫不出來連說話的力氣都沒了
          • --我也進(jìn)來了
          • 3.?re: 胃痙攣
          • 評(píng)論內(nèi)容較長,點(diǎn)擊標(biāo)題查看
          • --我也進(jìn)來了
          • 4.?re: 胃痙攣
          • 我都周期性的發(fā)作,算來有4年了 。每年最少一次,一次最少2天。吃了好多藥就差沒去做胃鏡了。 剛剛發(fā)作就隨便煮了點(diǎn)姜湯喝下就好了些,不知道還會(huì)不會(huì)發(fā)作了。
          • --許家洛
          • 5.?re: 胃痙攣
          • 我昨晚也疼的要死。。上次疼的直接120送醫(yī)院了,一上120我竟然就不疼了,醫(yī)院里掉了瓶鹽水就放回家了。這次正好國外旅游中,幾乎疼了一整晚,整個(gè)在床上翻滾狀態(tài)了。今天不疼了,就是整個(gè)人難受。。。求助阿
          • --胃疼
          • 6.?re: [Swing]在 JFileChooser 中進(jìn)行文件驗(yàn)證的小技巧
          • 輸入*還是會(huì)有問題
          • --ngh
          • 7.?re: 胃痙攣[未登錄]
          • 昨晚一夜的身不如死的感覺,胃痙攣兄不要來了吧 ,求你了
          • --李飛
          • 8.?re: 胃痙攣
          • 評(píng)論內(nèi)容較長,點(diǎn)擊標(biāo)題查看
          • --daidai
          • 9.?re: 胃痙攣
          • 評(píng)論內(nèi)容較長,點(diǎn)擊標(biāo)題查看
          • --痛啊
          • 10.?re: 胃痙攣
          • 媽啊 痛的快死了~!第一次感覺過這樣的痛啊~!和女的生孩子有的一比了吧~!哭哭哭~!
          • --痛啊

          閱讀排行榜

          主站蜘蛛池模板: 岳阳县| 上杭县| 泗洪县| 铜梁县| 余江县| 通江县| 库伦旗| 平泉县| 高清| 微博| 栖霞市| 建德市| 西充县| 临颍县| 宿州市| 鄂托克旗| 吉木乃县| 乌审旗| 昭觉县| 博兴县| 阿勒泰市| 永顺县| 武邑县| 罗定市| 开原市| 裕民县| 民县| 红原县| 丰原市| 建始县| 镇原县| 忻州市| 临颍县| 咸丰县| 洛南县| 台中县| 皋兰县| 凤冈县| 宜章县| 亳州市| 巴彦淖尔市|