2009-05-22 161 views
1

我有两个位图图像。其中一张包含使用USB相机拍摄的照片。另一个将包含一个形状,像一个rectagle,但它也可以是一个梯形,或者可以说是一个只有一种颜色的随机形状。现在剩下的图像是白色的。将两个图像合并为一个透明图像

两个图像是不一样的尺寸,但缩放算法这里不是最困难的部分,所以让我们假设它们是完全一样的尺寸。

我想表明我的USB摄像头图像的形状。白色部分将被视为透明的组合目的。现在我正在考虑按像素编辑图像像素,但是我正在寻找一个可以帮我实现的API。

所以,如果我拍张照片,在它的中间有房覆盖红色rectagle,生成的图像将与周围的房子一个红色矩形原始图片。

我正在使用.NET,如果这可以帮助。如果它包含一些有用的功能,我也可以使用win32 API。

编辑: 我接受的答案,因为它让我在正确的轨道上。这实际上非常容易做到。

Bitmap^ overlay_image = gcnew Bitmap("overlay.bmp"); 
Bitmap^ original_image = gcnew Bitmap("original.bmp"); 
overlay_image->MakeTransparent(Color::White); 
Graphics^ g_original = Graphics::FromImage(original_image); 
g_original->DrawImage(overlay_image, 0, 0); 

Voilà,original_image现在有一个红色的矩形。这对我的30fps usb相机来说实际上足够快,所以我可以实时获取它。

目前没有缩放比例。此外,它假定叠加图像背景是白色的,这将变得透明。

+1

Alpha通道或位图掩码? – 2009-05-22 17:37:20

回答

1

一个值得看的相当稳健库ImageMagick。他们甚至有一个库的.NET端口。它可以做与透明度,形状和叠加有关的事情。

我可能会尝试先使用command-line versions(例如,convertcomposite命令),看看您是否可以让它们按照您的要求做。如果可行,那么你应该能够使用他们的库来实现相同的功能。

相关问题