public static unsafe byte *PonierzMonohormatyczny(Bitmap Obraz)
        {
            IntPtr mr = Marshal.AllocHGlobal(Obraz.Width * Obraz.Height);

            OperacjeNaStrumieniu.Czyść((bool *)mr, Obraz.Width * Obraz.Height);
            byte *obsugiwana = (byte *)mr;

            int        j  = 0;
            BitmapData bp = Obraz.LockBits(new Rectangle(0, 0, Obraz.Width, Obraz.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);

            for (int y = 0; y < Obraz.Height; y++)
            {
                rgb *kr = (rgb *)((byte *)(bp.Scan0 + y * bp.Stride));
                for (int x = 0; x < Obraz.Width; x++, kr++, obsugiwana++)
                {
                    j  = (*kr).r;
                    j += (*kr).g;
                    j += (*kr).b;
                    byte zw         = ((byte)(j / 3));
                    *    obsugiwana = zw;
                }
            }
            Obraz.UnlockBits(bp);
            return((byte *)mr);
        }
示例#2
0
        public static byte *LoadRGB(Bitmap Obraz, out int Size)
        {
            IntPtr mr         = Marshal.AllocHGlobal(Size = (Obraz.Width * Obraz.Height * 3));
            byte * obsugiwana = (byte *)mr;

            BitmapData bp = Obraz.LockBits(new Rectangle(0, 0, Obraz.Width, Obraz.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);

            for (int y = 0; y < Obraz.Height; y++)
            {
                rgb *kr = (rgb *)((byte *)(bp.Scan0 + y * bp.Stride));
                for (int x = 0; x < Obraz.Width; x++, kr++)
                {
                    *(obsugiwana++) = (*kr).r;
                    *(obsugiwana++) = (*kr).g;
                    *(obsugiwana++) = (*kr).b;
                }
            }
            Obraz.UnlockBits(bp);
            return((byte *)mr);
        }
示例#3
0
        public static byte[] LoadRGB(Bitmap Obraz)
        {
            byte[] table      = new byte[(Obraz.Width * Obraz.Height) * 3];
            int    obsugiwana = 0;

            int        j  = 0;
            BitmapData bp = Obraz.LockBits(new Rectangle(0, 0, Obraz.Width, Obraz.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);

            for (int y = 0; y < Obraz.Height; y++)
            {
                rgb *kr = (rgb *)((byte *)(bp.Scan0 + y * bp.Stride));
                for (int x = 0; x < Obraz.Width; x++, kr++)
                {
                    table[obsugiwana++] = (*kr).r;
                    table[obsugiwana++] = (*kr).g;
                    table[obsugiwana++] = (*kr).b;
                }
            }
            Obraz.UnlockBits(bp);
            return(table);
        }