求高手:将两副BMP图象合并 ( 积分: 20 )

  • 主题发起人 主题发起人 phpb
  • 开始时间 开始时间
P

phpb

Unregistered / Unconfirmed
GUEST, unregistred user!
第二张图片不能将第一张图片覆盖住了,而且要将第二张图片的背景色去掉。
是这样的:有一张图片上是一个人的照片,还有一张图片上是眼镜的照片,
我想让眼镜放到人的照片上去。这样做很困难吗?
 
第二张图片不能将第一张图片覆盖住了,而且要将第二张图片的背景色去掉。
是这样的:有一张图片上是一个人的照片,还有一张图片上是眼镜的照片,
我想让眼镜放到人的照片上去。这样做很困难吗?
 
什么意思,是不是重叠呢?
就是说第1张,第2张产生的图是,第一和第二的和呢?
 
去我的贴子看看吧



32位图像处理库 delphi简易实现
http://www.delphibbs.com/delphibbs/dispq.asp?lid=3244051
你弄懂了我的贴子,也应该能解决你的问题了
 
谢谢,谢谢~~~~~~~~~~~~
 
有几种方法可以做到,一种是使用本身有ALPHA通道的图象,如PNG、PSD等格式的图片,你可以找个TPNGIMAGE的类,现成就可以马上做到了,这最方便;另一种是为眼镜定制一个MASK图片,用外部图片做蒙层,原理其实和方法一是一样的,但你要自己写合并的代码,合并的代码其实很好写:
假设两张图片相同位置的两个点:A1、A2;它们的RGB分值分别为R1、G1、B1和R2、G2、B2,那么,按透明度N(N的范围是0-100)合并的算法就是RGB分别合并。
var
k1, k2: double;
dstR, dstG, dstB: Integer;
begin
k1 := n / 100;
k2 := 1 - k1;
dstR := round(r1 * k1 + r2 * k2);
dstG := round(g1 * k1 + g2 * k2);
dstB := round(b1 * k1 + b1 * k2);
...........
end;
 
这个跟图象处理有关系吧。
在Delphi中,要是用TImage处理,跟Canvas的CopyMode属性有关。
我想Windows API中应该有相关的处理,并且很齐全,建议去找一下。
 
我试过,但是因为眼睛图片的背景还是不能很好的实现透明。
 
请高手回答...
 
支持释迦的方法,可以把两个图片重叠起来,
如果用逐点处理的方法,把指定颜色的点去除(GRB值取零,背景图GRB值100%),就应该能够实现叠加。如果前景图片取100%,则实现覆盖背景图。
 
用像数运算,丢弃你要丢弃的背景像数,填充两张图片混合后的像数,至于混合,有很多种
释迦,的方法是一种
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
后退
顶部