大头贴中的这个效果是怎样实现的? (美女哦,非看不可!!!) ( 积分: 100 )

  • 主题发起人 龙飞凤舞316
  • 开始时间

龙飞凤舞316

Unregistered / Unconfirmed
GUEST, unregistred user!
<效果图>http://www.quanso.net/2008/html/semks/images/20057916520713.jpg
在大头贴中看到:人是视频,前面的图片窗体是怎样能实现这样的过渡透明?
可能各位还不明白我的意思:假若有个摄像头视频在FORM1(是视频哦!!如效果图中的美女),另一图片(如效果图中的风景图片)在FORM2,FORM2在FORM1前面,怎样看上去会有效果图的效果(看上去就像视频显示在图片中);
 
<效果图>http://www.quanso.net/2008/html/semks/images/20057916520713.jpg
在大头贴中看到:人是视频,前面的图片窗体是怎样能实现这样的过渡透明?
可能各位还不明白我的意思:假若有个摄像头视频在FORM1(是视频哦!!如效果图中的美女),另一图片(如效果图中的风景图片)在FORM2,FORM2在FORM1前面,怎样看上去会有效果图的效果(看上去就像视频显示在图片中);
 
对一个BMP图进行椭圆形的透明处理,在这个(圆+一个范围)外的直接透明,在(圆-一个范围)的不透明,在(圆-一个范围)到(圆+一个范围)中进行透明就行了,然后就是合成一个图就成你要的效果了
 
如果是两张静态的图片合成这样的效果我会的,就是两张图片根据一个蒙板合成,就有这样的效果了,但我上次去拍大头贴时,显示器上显示是这样的:后面的是视频图像,前景是有一个过渡透明的窗体,这时还没有合成,我是想知道前面有过渡透明的窗体是怎样形成的?
能不能做成这样的窗体??
 
这个还是用photo处理更方便啊,放两幅图片,椭圆选择人像图选中一块,然后Ctrl+Shift+I反向选择,接着选择-->羽化,设置一个羽化值,最后点del删除就应该可以看到你想要的效果了!
 
现在要的不是用PHOTOSHOP来处理,而是怎样通过程序来实现!
 
我认为这个和背景图片有关,
应该是在放人的地方是透明的
 
要的就是透明
 
mm长得挺漂亮的

所谓过渡透明不难, 32位的bmp设置好每个象素点的alpha值, 然后用GDI+的函数和背景拼起来就可以了
 
能不能给点代码??
 
procedure TForm1.copymask(src,mask:tbitmap;dest:tcanvas);
var
bmp1,bmp,bmp2:TBitmap;
line,line1,line2:pByteArray;
i,j,c:Integer;
begin
bmp:=image1.Picture.Bitmap;//前景图
bmp1:=image3.Picture.Bitmap;//遮罩图片
bmp2:=image2.Picture.Bitmap;//背景图
bmp1.handletype:=bmDIB;
bmp.HandleType:=bmDIB;
bmp2.HandleType:=bmDIB;
bmp.PixelFormat:=pf24bit;
bmp1.PixelFormat:=pf24bit;
bmp2.PixelFormat:=pf24bit;
bmp2.Width:=bmp.Width ;
bmp2.Height:=bmp.Height ;
for j:=0 to bmp1.Height -1 do
begin
line:=bmp.ScanLine[j];
line1:=bmp1.ScanLine[j];
line2:=bmp2.ScanLine[j];
for i:=0 to bmp1.Width -1 do
begin
c:=line1[i*3];
line2[i*3]:=(line[i*3]*c+(255-c)*line2[i*3]) div 255;
line2[i*3+1]:=(line[i*3+1]*c+(255-c)*line2[i*3+1]) div 255;
line2[i*3+2]:=(line[i*3+2]*c+(255-c)*line2[i*3+2]) div 255;
end;
end;
image4.Picture.Graphic := bmp2
end;
//添加了四个image控件,
image1为前景、image2为遮罩图片、image3为背景图片、image4为合成之后的图片
遮罩图片有黑、白两种颜色 如果是有渐变效果,这图片也显示为渐变。
 
美女啊~~~~~~~~~~~~~~~~~~~~~~~~~~
 
楼上说的还是两张图片合成啊,但怎样才能像是视频效果,我想知道能不能做一个窗口像效果图中的风景部分,有过渡透明的地方,可以看到后面窗口,有点像透明窗体,但区别在于他有过渡透明的地方。
 
把背景和前景放到两个不同的Bitmap中,然后
根据自定义的方案来分析来计算出前景和背静结合后的颜色,然后绘制到这个点上去
定义一个函数
function TransColor(P:TPoint):TColor;
begin
.
.
.
end;

颜色可以通过对方案的分析来得到
比如距离一个点的距离等等。
将自定义的方案保存为文件
然后。。。
 
to iamy:
有点不明白!你的意思是不是把视频的每一帧合成,显示在另一个IMAGE中,我也想过,但处理下来看上去视频有点慢了。
 
用个png图片支持半透明的,很容易合成

找个pngimage,基本不用写什么代码就能搞定
 
我现在想的是前面能不能实现带有过渡透明窗体,不知这种想法是否错误!
 
是哦
肯定会边慢的
所以要找个更好的算法
是否可以参考使用flash的插件的TransParent的方法啊或者做通明的flash然后覆盖在前面
以前做网页的时候常用的方法,只是个假设啊。
或者用半透明的窗体覆盖在上面
另外
在DirectX中好象有相关的函数
可以考虑用DirectX的API来实现
 
那还不如找个透明图片,然后按像素做运算呢。。。。。。
 
我想前景应该是由两张图片决定的,一个是风景图片,另一个是蒙板图片,但到底怎样才不影响后面的视频,或透过这张图片看到后面的视频,郁闷!!
 
顶部