Asp.net确定上传图片黑白区域%

时间:2016-10-06 08:58:50

标签: c# asp.net

是否可以构建一个能够确定上传图像黑白区域的asp.net应用程序?

示例: enter image description here

用户上传图片后,应用程序将计算黑白区域。

输出

**怀特:** 32%

**黑色:** 68%

2 个答案:

答案 0 :(得分:1)

您可以使用Bitmap课程。使用属性WidthHeight,您可以计算总像素数。使用方法GetPixel,您可以获得特定像素的颜色。要将Color.White等已知颜色与其他颜色进行比较,您可以使用ToArgb方法。

Image yourImage = ...

Bitmap bitmap = new Bitmap(yourImage);
int whiteColorCount = 0;
int blackColorCount = 0;
for (int i = 0; i < bitmap.Width; i++)
{
    for (int c = 0; c < bitmap.Height; c++)
    {
        int pixelHexColor = bitmap.GetPixel(i, c).ToArgb();
        if (pixelHexColor == Color.White.ToArgb())
        {
            whiteColorCount++;
        }
        else if (pixelHexColor == Color.Black.ToArgb())
        {
            blackColorCount++;
        }
    }
}

long totalPixelCount = bitmap.Width * bitmap.Height;
double whitePixelPercent = whiteColorCount / (totalPixelCount / 100.0);
double blackPixelPercent = blackColorCount / (totalPixelCount / 100.0);
double otherPixelPercent = 100.0 - whitePixelPercent - blackPixelPercent;

答案 1 :(得分:0)

是的,您可以将图像转换为位图并使用此方法。它返回您设置颜色的像素数。获取黑白像素的数量并计算黑白的百分比。

    // Return the number of matching pixels.
private int CountPxl(Bitmap bmap, Color yourColor)
{
// Loop through the pixels.
int matches = 0;
for (int y = 0; y < bmap.Height; y++)
{
for (int x = 0; x < bmap.Width; x++)
{
if (bmap.GetPixel(x, y) == yourColor) matches++;
}
}
return matches;
}