Salve a tutti.
Devo scorrere un'immagine fino a trovarne il primo pixel scuro (diciamo che l'immagine è a sfondo bianco e per scuro intendo grigio/nero).
L'implementazione che ho utilizzato sfrutta GetPixel che però ho visto essere molto lento.
Mi sono documentato un po' e ho visto che è molto più veloce utilizzare i puntatori e LockBits.
Il codice iniziale (quello con GetPixel) è:
codice:
        int x = 0;
        int y = 0;
        bool trovatoNero = false;
        //cutVersion è un oggetto di tipo Bitmap

        while (y < cutVersion.Height && trovatoNero == false)
        {
            x = 0;
            c = cutVersion.GetPixel(x, y);
            while (x < cutVersion.Width && trovatoNero == false)
            {
                if (c.R <= 100 || c.G <= 100 || c.B <= 100)
                {
                    trovatoNero = true;
                }
                x++;
            }
            y++;
        }
Ho provato ad adattare il codice utilizzando LockBits ma non ottengo lo stesso risultato.
(A me interessa sapere a che altezza si trova il pixel scuro)
Il codice è:
codice:
       BitmapData bmpData = cutVersion.LockBits(new Rectangle(0, 0, cutVersion.Width, cutVersion.Height), ImageLockMode.ReadOnly, PixelFormat.Format32bppArgb);
        System.IntPtr bmpScan0 = bmpData.Scan0;
        unsafe
        {
            byte* bmpPtr = (byte*)(void*)bmpScan0;
           
            while (y < cutVersion.Height && trovatoNero == false)
            {
                x = 0;
                while (x < cutVersion.Width && trovatoNero == false)
                {
                    byte pixelXY = *(bmpPtr++);
                    if(pixelXY<=100)
                    {
                        trovatoNero = true;
                    }
                    x++;
                }
                y++;
            }
            cutVersion.UnlockBits(bmpData);
        }
Dove sbaglio?