GetPixel始终在png图像上返回0

时间:2017-08-18 14:38:09

标签: c# .net image-processing c#-4.0 bitmap

当我用GetPixel()读取图像时,颜色值始终为黑色。我的图像是png图像。

我之前尝试将图片转换为位图,但没有成功。

我相信哪个问题不是我的代码,因为我是否在Paint中打开png图像并且只保存它。代码正确读取图像。

我像下面一样加载图片

myImage = new Bitmap(fileName);

我需要在这里阅读图片

private void LoadImageMap(Bitmap value){
        for (int col = 0; col < value.Width; col++)
        {
            for (int row = 0; row < value.Height; row++)
            {
                var color = value.GetPixel(col, row);

var color总是黑色。

Sample of the image...

2 个答案:

答案 0 :(得分:1)

PNG图像有透明度,当像素为完全透明度GetPixel()时,结果为RGB颜色值为零。

然后我的代码需要一个if来验证这种情况。

解决方案就像吼叫:

var color = value.GetPixel(x, y);

if(color.A.Equals(0))
{
    color = Color.White;
}

PNG使用ARGB颜色,其中A代表alpha通道,alpha是否为零,此像素具有完全透明度。

答案 1 :(得分:0)

由于您将位图传递给代码,因此在调用GetPixel时需要实际使用该变量。此外,在这种情况下,不需要ref关键字。

private void LoadImageMap(Bitmap value)
{
    for (int col = 0; col < value.Width; col++)
    {
        for (int row = 0; row < value.Height; row++)
        {
            var color = value.GetPixel(col, row);
        }
    }
}