public static BufferedImage createBandedRGBImage(int imageWidth,
                                   int imageHeight,
                                   int imageDepth,
                                   short data[][],
                                   boolean hasAlpha){
      int numbits,transparency ;
      if(hasAlpha) {
         numbits = 4;
         transparency = Transparency.TRANSLUCENT;
      } else {
         numbits = 3;
         transparency = Transparency.OPAQUE;
      }
      int[] bits = new int[numbits];
      int[] bankindices = new int[numbits];
      int[] bandoffsets = new int[numbits];

      for(int i=0;i<numbits;i++){
          bits[i] = imageDepth;
          bankindices[i] =i;
          bandoffsets[i] =0;
      }

      ComponentColorModel ccm = new ComponentColorModel(
                          ColorSpace.getInstance(ColorSpace.CS_sRGB),
                          bits,   //image depth array
                          hasAlpha,
                          false,
                          Transparency.OPAQUE,
                          DataBuffer.TYPE_USHORT);

      BandedSampleModel csm = new BandedSampleModel(
                                    DataBuffer.TYPE_USHORT,
                                    imageWidth, imageHeight,
                                    imageWidth, //scan line stride
                                    bankindices,//bank indices
                                    bandoffsets);//bad offsets

      DataBuffer dataBuf = new DataBufferUShort(data, imageWidth*imageHeight);

      WritableRaster wr = Raster.createWritableRaster(csm, dataBuf, new Point(0,0));

      return  new BufferedImage(ccm, wr, false, null);
   }

Hosted by www.Geocities.ws

1