0

下部と右側に空白がたくさんある画像がいくつかあります。ユーザーに表示する前に、その空白をトリミングしたい。

これまでのところ、下から検出する白以外のピクセルを実装しました。ピクセル形式はFormat32BppArgbです。

        byte[] byteImage = Convert.FromBase64String(imageString);

        MemoryStream ms = new MemoryStream(byteImage, 0, byteImage.Length);
        ms.Write(byteImage, 0, byteImage.Length);
        Image image = Image.FromStream(ms, true);
        Bitmap bmpImage = new Bitmap(image);
        int imageDataHeight = bmpImage.Height;
        int imageWidth = bmpImage.Width;
        int imageHeight = bmpImage.Height;

        BitmapData data = bmpImage.LockBits(new Rectangle(0, 0, imageWidth, imageHeight), ImageLockMode.ReadOnly, bmpImage.PixelFormat);
        try
        {
            unsafe
            {
                int width = data.Width / 2;
                for (int y = data.Height-1; y > 0 ; y--)
                {
                    byte* row = (byte*)data.Scan0 + (y * data.Stride);

                    int blue = row[width * 3];
                    int green = row[width * 2];
                    int red = row[width * 1];

                    if ((blue != 255) || (green != 255) || (red != 255))
                    {
                        imageDataHeight = y + 50;
                        break;
                    }
                }
            }
        }
        finally
        {
            bmpImage.UnlockBits(data);
        }

        // cropping a rectangle based on imageDataHeight
        // ...

列を右側から左側へと正しく繰り返し処理し、白以外のピクセルを検出するにはどうすればよいですか?

4

1 に答える 1