public static void composeThroughMask(Raster src,WritableRaster dst,Raster sel){
  int x=src.getMinX();
  int y=src.getMinY();
  int w=src.getWidth();
  int h=src.getHeight();
  int srcRGB[]=null;
  int selRGB[]=null;
  int dstRGB[]=null;
  for (int i=0; i < h; i++) {
    srcRGB=src.getPixels(x,y,w,1,srcRGB);
    selRGB=sel.getPixels(x,y,w,1,selRGB);
    dstRGB=dst.getPixels(x,y,w,1,dstRGB);
    int k=x;
    for (int j=0; j < w; j++) {
      int sr=srcRGB[k];
      int dir=dstRGB[k];
      int sg=srcRGB[k + 1];
      int dig=dstRGB[k + 1];
      int sb=srcRGB[k + 2];
      int dib=dstRGB[k + 2];
      int sa=srcRGB[k + 3];
      int dia=dstRGB[k + 3];
      float a=selRGB[k + 3] / 255f;
      float ac=1 - a;
      dstRGB[k]=(int)(a * sr + ac * dir);
      dstRGB[k + 1]=(int)(a * sg + ac * dig);
      dstRGB[k + 2]=(int)(a * sb + ac * dib);
      dstRGB[k + 3]=(int)(a * sa + ac * dia);
      k+=4;
    }
    dst.setPixels(x,y,w,1,dstRGB);
    y++;
  }
}

public static void composeThroughMask ( Raster src , WritableRaster dst , Raster sel ) { int x = src . getMinX ( ) ; int y = src . getMinY ( ) ; int w = src . getWidth ( ) ; int h = src . getHeight ( ) ; int srcRGB [ ] = null ; int selRGB [ ] = null ; int dstRGB [ ] = null ; for ( int i = 0 ; i < h ; i ++ ) { srcRGB = src . getPixels ( x , y , w , 1 , srcRGB ) ; selRGB = sel . getPixels ( x , y , w , 1 , selRGB ) ; dstRGB = dst . getPixels ( x , y , w , 1 , dstRGB ) ; int k = x ; for ( int j = 0 ; j < w ; j ++ ) { int sr = srcRGB [ k ] ; int dir = dstRGB [ k ] ; int sg = srcRGB [ k + 1 ] ; int dig = dstRGB [ k + 1 ] ; int sb = srcRGB [ k + 2 ] ; int dib = dstRGB [ k + 2 ] ; int sa = srcRGB [ k + 3 ] ; int dia = dstRGB [ k + 3 ] ; float a = selRGB [ k + 3 ] / 255f ; float ac = 1 - a ; dstRGB [ k ] = ( int ) ( a * sr + ac * dir ) ; dstRGB [ k + 1 ] = ( int ) ( a * sg + ac * dig ) ; dstRGB [ k + 2 ] = ( int ) ( a * sb + ac * dib ) ; dstRGB [ k + 3 ] = ( int ) ( a * sa + ac * dia ) ; k += 4 ; } dst . setPixels ( x , y , w , 1 , dstRGB ) ; y ++ ; } }
interpolates between two rasters according to the alpha level of a mask raster .
