基本原理:
图像的透明混合有个专属名词– Alpha Blending
对任意两张图像可以合成为一张图像,合成图像的像素取值根据数学公式:
RGB3 = (1- a) * RGB1 + a * RGB2
其中a为混合透明度取值范围[0, 1]之间, RGB3为目标像素值, RGB1与RGB2的值分别来自两
张不同的图像。
两张源图像分别为:
第二张源图像是房屋设计图
三:最终程序效果如下
四:程序关键代码及解释
获取BufferedImage对象中像素数据的代码如下:
[java] view plaincopy
- public void getRGB(BufferedImage img, int x, int y, int width, int height, int[] pixelsData) {
- int type = img.getType();
- if (type == BufferedImage.TYPE_INT_ARGB || type == BufferedImage.TYPE_INT_RGB) {
- img.getRaster().getDataElements(x, y, width, width, pixelsData);
- } else {
- img.getRGB(x, y, width, height, pixelsData, 0, img.getWidth());
- }
- }
, width);