2016-12-24 14 views
0

OpenFileDialog에서 파일 형식을 선택하고 파일 비트를 비트 맵 이미지로 표시하려고합니다. 선택한 파일에 0/1 비트가 포함되어 있음을 의미합니다. 흑백 이미지에서 너비와 높이가 사용자에게 표시되도록하고 싶습니다. 또한 선택한 파일의 크기에 제한이 없기를 원합니다. 메모리가 처리 할 수있는만큼 클 수 있습니다. 어떤 아이디어? 파일이 올바른 이미지 파일 인 경우C# - 모든 파일 형식을 그림 상자에 비트 맵으로 변환

+1

에 이미지를 할당하고 그로드. –

답변

3

, 당신은 단순히이 같은 이미지를 읽을 수 있습니다

Image image = Image.FromFile(pathOfImage); 

을 ... 그리고 그림 상자에 할당합니다.

System.Drawing.dll에 대한 참조가 필요하며 코드 상단에 using using System.Drawing;을 포함해야합니다.


그러나 파일의 비트가 흑백 픽셀을 나타내는 경우 이미지를 직접 그려야합니다.

먼저 Bitmap을 만든 다음 그래픽 객체를 만듭니다. 그런 다음 그 위에 픽셀을 그릴 수 있습니다.

using (var image = new Bitmap(width, height)) 
using (var g = Graphics.FromImage(image)) { 
    // TODO: Draw using the graphics object. (Insert code below) 
} 

당신은 비트를 읽기 위해이 답변에서 답을 사용할 수 있습니다 BinaryReader - Reading a Single “ BIT ”?

당신이 다음 비트를 반복 할 수있는 더블 루프에서. 비트 라인 씩 저장된다고 가정 :

using (var stream = new FileStream("file.dat", FileMode.Open)) { 
    for (int y = 0; y < height; y++) { 
     for (int x = 0; x < width; x++) { 
      bool? bit = stream.ReadBit(true); 
      if (bit == null) { // No more bits 
       return; 
      } 
      if (bit.Value) { 
       g.FillRectangle(Brushes.White, x, y, 1, 1); 
      } 
     } 
    } 
} 

마지막 비트 맵 이미지로 임의 바이트 변환 함수를 작성 그림 상자

pictureBox1.Image = image; 
+0

파일이 유효한 이미지가 아닙니다. 그는 임의의 파일의 비트 필드를 흑백으로 표현하고자합니다. –

+0

올바른 이미지 파일도 0과 1 비트로 구성되어 있으므로 혼란 스럽습니다. –

+1

Graphics 객체 대신 [[Bitmap.LockBits'] (https://msdn.microsoft.com/en-us/library/system.drawing.bitmap.lockbits (v = vs.110) .aspx)를 사용합니다. 픽셀 당 1 비트 비트 맵을 사용합니다. (답을 쓰겠지만 오늘은 내 전화기에만 국한됩니다.) –