统一:读取图像像素

时间:2017-02-01 11:48:15

标签: c# unity3d unity5

我试图读取我的图像有多少像素。它工作正常,但是它返回了错误的像素数。图像总共有400个像素,我只得到256个。

private void Pixelreader()
{
    // Load image
    Texture2D image = (Texture2D)Resources.Load(texture);
    Debug.Log(image);

    // Iterate through it's pixels
    for (int i = 0; i < image.width; i++)
    {
        for (int j = 0; j < image.height; j++)
        { 
            Color pixel = image.GetPixel(i, j);

            // if it's a white color then just debug...
            if (pixel == Color.white)
            {
                Debug.Log("Im white");
            }
            else 
            {
                Debug.Log("Im black");
            }
        }
    }
}

打印148为白色,108为黑色打印.148 + 108 = 256.因此有很多像素缺失。知道为什么它没有读取400像素的完整图像吗?

2 个答案:

答案 0 :(得分:2)

我认为问题在于其余的像素不是黑色或白色,只是眼睛看不到的小色调。 尝试调试image.width * image.height以获取图像的像素数。

编辑:您应该查看图片检查器内的最大尺寸。它可能被锁定在256。

Max size inside inspector of image.

~Menno

答案 1 :(得分:1)

请改为尝试:

var whitePixels = 0;
var blackPixels = 0;
for (int i = 0; i < image.width; i++)
    for (int j = 0; j < image.height; j++)
    { 
        Color pixel = image.GetPixel(i, j);

        // if it's a white color then just debug...
        if (pixel == Color.white)
          whitePixels++;
        else 
          blackPixels++;
    }
Debug.Log(string.Format("White pixels {0}, black pixels {1}", whitePixels, blackPixels));

非常确定你的输出行只是被截断了。

BTW,&#34; GetPixel&#34;是出了名的慢,但这是另一个故事。