如果所选区域不是完美的矩形,如何从图像中裁剪特定区域?在这个image中,如何将红色以外的区域裁剪成不同的部分?
答案 0 :(得分:0)
为了隔离图像的非矩形区域和/或基于颜色的区域,一种强大的方法是使用32位图像的alpha /透明属性。例如,左侧的图像是原始的24位图像(无alpha),右侧是将该图像转换为32位的结果,并为所有白色或红色的像素设置alpha = 0原始图像。实际上,这可以使您的图像非矩形。
这个代码非常简单。下面的方法采用输入位图(24位),生成一个空白的32位图像,并将所有像素从源传输到目标,将所有白色或红色像素的alpha设置为0.
public Bitmap ModifyAlpha(Bitmap bmap)
{
Bitmap bmap32 = new Bitmap(bmap.Width, bmap.Height, PixelFormat.Format32bppArgb);
Color theColor = new Color();
Color newColor = new Color();
for (int i = 0; i < bmap.Width; i++)
{
for (int j = 0; j < bmap.Height; j++)
{
// Get the color of the pixel at (i,j)
theColor = bmap.GetPixel(i, j);
// Set the pixel color/range you want to make transparent
if ((theColor.R > 250 && theColor.G > 250 && theColor.B > 250) ||
(theColor.R > 250))
{
newColor = Color.FromArgb(0, theColor.R, theColor.G, theColor.B);
bmap32.SetPixel(i, j, newColor);
} else
{
bmap32.SetPixel(i, j, theColor);
}
}
}
return bmap32;
}