怎么将BufferedImage对象,转换成Iamge对象以显示??

解决方案 »

  1.   

    直接向上转型就可以啦,比如:
    Iamge image = (Iamge )bufferedImage;
      

  2.   

    要将Image转换成byte[],该怎么办呢??
      

  3.   

    天哪,BufferedImage本来就是Image的子类,当然一个BufferedImage也就是一个Image了,和Image一样,可以使用Graphics.drawImage(...)来显示,最后一个参数observer完全可以使用null,因为BufferedImage使用的是Immediate Image Model,以前那个Image使用的是Push Image Model关于检索图象数据:
    现在的BufferedImage比以前的Image更加普通化,可以使用任意的颜色模型,采样模式,当然也就更加的复杂,简单说来,一个BufferedImage由下面几部分组成:
    1.一个Raster(既:表示的是"raw"图象数据)
    一个Raster又是由一个DataBuffer和一个SampleModel组成,DataBuffer是用来存储图象数据的(当然,也不一定非是图象数据,比如在医学图象上,可以存储医学数据,比如CT获得的骨质密度等,关键问题在于,你如何用SampleModel(采样模型)来对DataBuffer进行解释,所以图象数据实际上使用DataBuffer数据和SampleModel对这个数据的解释生成的
    2。一个ColorModel(颜色模型)
    颜色模型是用来解释Raster是如何表示成显示器能显示的颜色的除了以前的RGB颜色模型外,还可以使用CIE XYZ颜色模型,HSV颜色模型,CMY颜色模型(一般用在打印机上)等等,甚至还可以定义自己的颜色模型,颜色模型通过ColorSpace(颜色空间)来表示,Java 2D上ColorSpace的概念实际上相当于《计算机图形学》上的颜色模型,而ColorModel是颜色的数据存储方式比如直接存储(DirectModel),或者使用索引方式存储(IndexedModel),一般小于256色的图形使用索引方式存储最简单的检索图象数据的方法是使用RGB、Direct Color Model的存储方式,在生成一个BufferedImage时,类型设置为INT_RGB即可,当然也可以使用BufferedImage的getPixel(...)方法,这样不用考虑图象是如何存储的,当然效率也不如直接访问图象数据的高