Witam. Na wstępie chciałem się przywitać gdyż jest to mój pierwszy post ;)
Obecnie tworzę swój pierwszy większy program, ktory będzie sprawdzał karty odpowiedzi. Do programu ładujemy skan karty odpowiedzi, wykonuje binaryzacje a następnie chce sprawdzać które pixele są zamalowane, a które są puste. Problem w tym, że wczytując plik o wielkości np 500x500px program skanuje go bardzo dlugo (250tys pixeli do sprawdzenia). Zrealizowałem pętle, która skanuje pixele i zapisuje ich kolory do tablicy 2wymiarowej. kod wygląda tak:
Bitmap bitmapa;
bitmapa = (Bitmap)pictureBox2.Image;
BitmapData dane = bitmapa.LockBits(
new Rectangle(0, 0, bitmapa.Width, bitmapa.Height), ImageLockMode.ReadWrite, bitmapa.PixelFormat);
unsafe
{ // wskaźnik na pierwszy piksel
int y = 0, x = 0;
byte* bitmapaPtr = (byte*)dane.Scan0;
// padding bitmapy
int offset = dane.Stride - dane.Width * 3;
Bitmap tt;
tt = (Bitmap)pictureBox4.Image;
bitmapa.UnlockBits(dane);
progressBar1.Value = 1;
for (y = 0; y < bitmapa.Height; y++)
{
for (x = 0; x < bitmapa.Width; x++)
{
// operacje na pikselu
try
{
rtn = "#" + pixelColor.R.ToString("X2") + pixelColor.G.ToString("X2") + pixelColor.B.ToString("X2");
tabl[y, x] = rtn;
richTextBox3.Text += tabl[y, x] + "\n";
} catch (Exception) { }
bitmapaPtr += 3; // następny piksel
} bitmapaPtr += offset; // następny wiersz
} }
A teraz pytanie. W jaki sposób sprawdzić pojedyńcze pixele i zapisać ich kolor do tablicy danych. Wiem, że problem wygląda bardzo prosto jednak już od kilku godzin nie potrafię sobię z nim poradzić. Z góry dziękuje za wszelką pomoc. Wszelkie uwagi, komentarze mile widziane. Pozdrawiam Rafał.