基本原理:

图像的透明混合有个专属名词– Alpha Blending

对任意两张图像可以合成为一张图像,合成图像的像素取值根据数学公式:

RGB3 = (1- a) * RGB1 + a * RGB2

其中a为混合透明度取值范围[0, 1]之间, RGB3为目标像素值, RGB1与RGB2的值分别来自两

张不同的图像。

两张源图像分别为:

第二张源图像是房屋设计图

三:最终程序效果如下

四:程序关键代码及解释

获取BufferedImage对象中像素数据的代码如下:

  1. public void getRGB(BufferedImage img, int x, int y, int width, int height, int[] pixelsData) {
  2. int type = img.getType();
  3. if (type == BufferedImage.TYPE_INT_ARGB || type == BufferedImage.TYPE_INT_RGB) {
  4. img.getRaster().getDataElements(x, y, width, width, pixelsData);
  5. } else {
  6. img.getRGB(x, y, width, height, pixelsData, 0, img.getWidth());
  7. }
  8. }

, width);

  • }
  • }