C# 裁剪区域不是矩形时裁剪图像
当所选区域不是完美矩形时,如何从图像中裁剪特定区域?在这种情况下,如何将红色以外的区域裁剪成不同的部分?要隔离图像的非矩形区域和/或基于颜色的区域,一个强大的方法是使用32位图像的alpha/透明度属性。例如,左侧的图像是原始的24位图像(无alpha),右侧的图像是将该图像转换为32位并将原始图像中所有白色或红色像素的alpha设置为0的结果。实际上,这可以使图像非矩形 这方面的代码相当简单。下面的方法获取一个输入位图(24位),生成一个空白的32位图像,并将所有像素从源传输到目标,将所有白色或红色像素的alpha设置为0C# 裁剪区域不是矩形时裁剪图像,c#,.net,image-processing,C#,.net,Image Processing,当所选区域不是完美矩形时,如何从图像中裁剪特定区域?在这种情况下,如何将红色以外的区域裁剪成不同的部分?要隔离图像的非矩形区域和/或基于颜色的区域,一个强大的方法是使用32位图像的alpha/透明度属性。例如,左侧的图像是原始的24位图像(无alpha),右侧的图像是将该图像转换为32位并将原始图像中所有白色或红色像素的alpha设置为0的结果。实际上,这可以使图像非矩形 这方面的代码相当简单。下面的方法获取一个输入位图(24位),生成一个空白的32位图像,并将所有像素从源传输到目标,将所有白
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;
}
公共位图修改Alpha(位图bmap)
{
位图bmap32=新位图(bmap.Width、bmap.Height、PixelFormat.Format32bppArgb);
颜色颜色=新颜色();
Color newColor=新颜色();
对于(int i=0;i250和颜色G>250和颜色B>250)||
(颜色R>250)
{
newColor=Color.FromArgb(0,Color.R,Color.G,Color.B);
bmap32.SetPixel(i,j,newColor);
}否则
{
bmap32.SetPixel(i,j,颜色);
}
}
}
返回bmap32;
}
图像只能是矩形的。看这张照片,我不知道你想要什么。。也许我猜这取决于你所说的“作物”是什么意思。如果它是一个ARGB图像(带有alpha/透明度),并且您想要使某个颜色的像素透明,例如,您可以执行Bitmap.GetPixel()并检查您想要隐藏的颜色,然后调整该像素的alpha。请帮个忙,读一本关于图像处理基础知识的书或至少一些教程。。。可能有帮助的术语:aoi、roi、maskInteresting问题-您有更高分辨率的图像吗?