Вырезать прозрачные части изображения

Обновленное изображение:

Большое спасибо, чувак, но я хотел сделать что-то немного по-другому, вырезать каждый прямоугольник здесь как отдельное изображение. Сначала попробуем найти границы синего блока. Звучит сложно, но на самом деле все просто.

посмотри, когда я сделал так далеко:

  private unsafe Bitmap CodeImage(Bitmap bmp)
    {

        Bitmap bmpRes = new Bitmap(bmp.Width, bmp.Height);

        BitmapData bmData = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), System.Drawing.Imaging.ImageLockMode.ReadOnly, bmp.PixelFormat);


        IntPtr scan0 = bmData.Scan0;


        int stride = bmData.Stride;


        int nWidth = bmp.Width;
        int nHeight = bmp.Height;
        int minX = 10000 ;
        int maxX = -10000;
        int minY = 10000;
        var maxY = -10000;

        bool found = false;
        for (int y = 0; y < nHeight; y++)
        {
            byte* p = (byte*)scan0.ToPointer();
            p += y * stride;


            for (int x = 0; x < nWidth; x++)
            {




                if (p[3]!=0)  //Check if pixel is transpert;
                {


                    found = true;
                  if (x < minX)
                      minX = x;
                  if (y < minY)
                      minY = y;
                   if (x > maxX)
                      maxX = x;
                  if (y > maxY)
                      maxY = y;

                }

                else
                {
                    if (found)
                    {


                        Rectangle temp = new Rectangle(minX, minY, maxX - minX,  maxY-minY);


                        return bmp.Clone(temp, bmp.PixelFormat);
                    }
                }



                p += 4;


            }
        }


        return null;

    }

Вы на самом деле написали, и я должен рассчитать ширину следующим образом:int width = maxX - minX; и это на самом деле работает .. но высота 0 ....

Попробуйте это, выведите почти правильный прямоугольник с этими границами: (200 800 400, и0 на высоте). Я просто использовал части вашего кода в моем алгоритме, и да, вы были правы, но теперь есть небольшая проблема с высотой, я был бы очень признателен, если вы посмотрите

Ответы на вопрос(1)

Ваш ответ на вопрос