-2

Can someone please tell me about how to convert a thresholded image stored in a 'Bitmap' variable into a byte array and view the byte array in a text box or a text file, in C#?

Can someone please help me with the code to it?

i have threshoded the image using Aforge.net - link. And trying to view the byte array of it in 1s and 0s.

Thank you.

hirosht
  • 932
  • 2
  • 17
  • 31

1 Answers1

2

If your image is Bitmap you can use

LockBits and then Scan0 methods:

http://msdn.microsoft.com/query/dev11.query?appId=Dev11IDEF1&l=EN-US&k=k(System.Drawing.Imaging.BitmapData);k(TargetFrameworkMoniker-.NETFramework,Version%3Dv4.5);k(DevLang-csharp)&rd=true

  public static Byte[] BmpToArray(Bitmap value) {
      BitmapData data = value.LockBits(new Rectangle(0, 0, value.Width, value.Height),   ImageLockMode.ReadOnly, value.PixelFormat);

      try {
        IntPtr ptr = data.Scan0;
        int bytes = Math.Abs(data.Stride) * value.Height;
        byte[] rgbValues = new byte[bytes];
        Marshal.Copy(ptr, rgbValues, 0, bytes);

        return rgbValues;
      }
      finally {
        value.UnlockBits(data);
      }
    }
Dmitry Bychenko
  • 180,369
  • 20
  • 160
  • 215
  • Can you please explain it with a code snippet of how to exactly do it? Thank you – hirosht Jun 27 '13 at 18:08
  • Sir, you code snippet works perfectly and gave the output as i excpected from 0s and 255s representing the thresholded image in black and white. as soon as i got 15 reputations, i'll rate up your answer – hirosht Jun 27 '13 at 19:06
  • Excellent, though you should consider outputting the stride as out parameter, since it is necessary for manipulating the data. Though I guess it's possible to just divide the array length by the image height... – Nyerguds Jan 10 '18 at 14:41