Do you drink java?



      像写情书一样coding

 

[Image] 使用JAI将实现RenderedImage接口的图像对象序列化

我们都知道,图像对象可以编码成指定图像格式文件保存在硬盘上,需要时再对其进行解码读入内存。但是除了这样还有别的办法可以将图像对象保存在硬盘上吗?熟悉Java I/O 的人也许可以想到采用对象序列化(Object serialization)试一试,很好,但是如果你研究了 BufferedImage 类的结构后就会大失所望(至少当时我是这样)。
BufferedImage.jpg

BufferedImage 提供一般图像管理。BufferedImage 对象包括另外两个对象:Raster 和 ColorModel。Raster 对象包含另外两个对象:DataBuffer 和 SampleModel。不幸的是,他们都没有实现序列化所必需的 Serializable 接口,所以无法直接对他们进行对象序列化。

我在学习 JAI 的时候发现了 javax.media.jai.remote 包里有一个类 SerializableRenderedImage,这个类实现了RenderedImage, Serializable 接口,可以将 RanderedImage 对象作为构造函数的参数实例化一个可以序列化的图像对象。

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 都实现自 RenderedImage 接口,也就是说所有实现自 RenderedImage 接口的对象均可作为参数包装出一个 SerializableRenderedImage 类型对象,将其序列化。

下面是一个简单的例子说明了这个类的使用方法:

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 阅读(2806) 评论(1)  编辑  收藏 所属分类: Java Media

评论

# re: 将 RenderedImage 对象序列化 2005-10-18 19:32 pudgy

不错阿,感谢了
  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航:
 

导航

统计

公告

DSC_0106.jpg
本博客已经搬家到CSDN
http://blog.csdn.net/chenweionline




常用链接

留言簿(5)

随笔分类

随笔档案

About Technology

My Favorite Website

搜索

积分与排名

最新评论

  • 1. re: 胃痉挛
  • 兄弟们你们都做胃镜了吗开的啥药?有什么养胃秘方啊?请赐教啊!
  • --我也进来了
  • 2. re: 胃痉挛
  • @痛啊
    我感觉比生孩子还疼,生孩子还能有意识呢!这种疼还叫不出来连说话的力气都没了
  • --我也进来了
  • 3. re: 胃痉挛
  • 评论内容较长,点击标题查看
  • --我也进来了
  • 4. re: 胃痉挛
  • 我都周期性的发作,算来有4年了 。每年最少一次,一次最少2天。吃了好多药就差没去做胃镜了。 刚刚发作就随便煮了点姜汤喝下就好了些,不知道还会不会发作了。
  • --许家洛
  • 5. re: 胃痉挛
  • 我昨晚也疼的要死。。上次疼的直接120送医院了,一上120我竟然就不疼了,医院里掉了瓶盐水就放回家了。这次正好国外旅游中,几乎疼了一整晚,整个在床上翻滚状态了。今天不疼了,就是整个人难受。。。求助阿
  • --胃疼
  • 6. re: [Swing]在 JFileChooser 中进行文件验证的小技巧
  • 输入*还是会有问题
  • --ngh
  • 7. re: 胃痉挛[未登录]
  • 昨晚一夜的身不如死的感觉,胃痉挛兄不要来了吧 ,求你了
  • --李飞
  • 8. re: 胃痉挛
  • 评论内容较长,点击标题查看
  • --daidai
  • 9. re: 胃痉挛
  • 评论内容较长,点击标题查看
  • --痛啊
  • 10. re: 胃痉挛
  • 妈啊 痛的快死了~!第一次感觉过这样的痛啊~!和女的生孩子有的一比了吧~!哭哭哭~!
  • --痛啊

阅读排行榜