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); }
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); }
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); }