How can I check if a Bitmap Image is empty?

蓝咒 提交于 2019-12-11 05:13:00

问题


In Form1 I create in the constructor a new Bitmap:

public Form1()
{
    InitializeComponent();
    de.pb1 = pictureBox1;
    de.bmpWithPoints = new Bitmap(pictureBox1.Width, pictureBox1.Height);
    de.numberOfPoints = 100;
    de.randomPointsColors = false;
    de.Init();
}

In the class I check if the bitmap is null :

if (bmpWithPoints == null)

The bitmap is not null but is also not drawn with anything on it. I check in the class if it's null I want to draw and set points on the bitmap.

if (bmpWithPoints == null)
{
    for (int x = 0; x < bmpWithPoints.Width; x++)
    {
        for (int y = 0; y < bmpWithPoints.Height; y++)
        {
            bmpWithPoints.SetPixel(x, y, Color.Black);
        }
    }
    Color c = Color.Red;
    for (int x = 0; x < numberOfPoints; x++)
    {
        for (int y = 0; y < numberOfPoints; y++)
        {
            if (randomPointsColors == true)
            {
                c = Color.FromArgb(
                    r.Next(0, 256),
                    r.Next(0, 256),
                    r.Next(0, 256));
            }
            else
            {
                c = pointsColor;
            }
            bmpWithPoints.SetPixel(r.Next(0, bmpWithPoints.Width), 
                r.Next(0, bmpWithPoints.Height), c);
        }
    }
}
else
{
    randomPointsColors = false;
}

Maybe the question should not be if the image is empty or null, I'm not sure how to call it. Maybe just a new image. But i want to check that if the new bitmap is (empty) nothing drawn on it then set the pixels(points).


回答1:


You can create a method which checks image pixels. As an option, you can use LockBits method to get bitmap bytes into a byte array and use them:

bool IsEmpty(Bitmap image)
{
    var data = image.LockBits(new Rectangle(0,0, image.Width,image.Height),
        ImageLockMode.ReadOnly, image.PixelFormat);
    var bytes = new byte[data.Height * data.Stride];
    Marshal.Copy(data.Scan0, bytes, 0, bytes.Length);
    image.UnlockBits(data);
    return bytes.All(x => x == 0);
}


来源:https://stackoverflow.com/questions/41290855/how-can-i-check-if-a-bitmap-image-is-empty

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!