Область растрового изображения уже заблокирована при доступе к GetPixel

У меня есть Bitmap bmкоторый содержит различные флажки. Мне нужно перебрать каждое положение X Y флажка и измерить количество черных и белых пикселей для каждого флажка, чтобы определить, было ли отмечено расположение флажка или нет. Эта строка уменьшает цвет до истинного / ложного (черный / белый):lResult.Add(bm.GetPixel(y, x).GetBrightness() < 0.5f); с сохранением результатов в lResults List.

Затем я складываю количество истинных пикселей (пикселей, которые были отмечены) и печатаю его на консоли, чтобы проверить, работает ли он. Хотя сейчас я получаю сообщение об ошибке:

            Bitmap bm = new Bitmap(@"C:\IronPDFDoc\1.png", true);
            BitmapData srcData = bm.LockBits(
             new Rectangle(0, 0, bm.Width, bm.Height),
             ImageLockMode.ReadOnly,
             PixelFormat.Format32bppArgb);


            SecondarySchoolCheckboxes b1 = new SecondarySchoolCheckboxes();

            foreach (KeyValuePair<string, CheckboxData> element in b1.CheckboxLocations)
            {

                int startX = element.Value.startX;
                int endX = element.Value.endX;
                int startY = element.Value.startY;
                int endY = element.Value.endY;

                List<bool> lResult = new List<bool>();



                    for (int y = startY; y < endY; y++)
                    {
                        for (int x = startX; x < endX; x++)
                        {
                            lResult.Add(bm.GetPixel(y, x).GetBrightness() < 0.5f);
                        }
                    }


                int numMarked = 0;
                foreach(bool b in lResult)
                {
                    if(b == true)
                    {
                        numMarked++;
                    }
                }

                Console.WriteLine($"Box Name: {element.Key}\nNum Squares Marked: {numMarked}\n");


            }

Кто-нибудь может понять, почему я получаю сообщение об ошибке? Я просмотрел различные другие похожие сообщения Stackru для этой ошибки, хотя ни одна из них не решает мою конкретную проблему.

0 ответов

Другие вопросы по тегам