2013-03-07 1 views
0

나는 사각형을 복제하고 지정하는 비트 맵을 가지고 있습니다. 현재 사각형은 QR 코드를위한 직사각형 검사에 사용 된 특정 너비와 높이 값을 가지고 있습니다. 나는 이것이 좌상 구석을 검사하는 것을 알아 차렸다. 나는 같은 크기 (너비와 높이)의 오른쪽 위 모서리, 오른쪽 아래 모퉁이 및 왼쪽 모서리를 확인하기 위해이를 변경할 수 있습니까?비트 맵 클론을위한 사각형 그리기

Bitmap result = fullImg.Clone(new System.Drawing.Rectangle(0, 0, 375, 375), fullImg.PixelFormat); 

모든 도움을 주시면 대단히 감사하겠습니다. QRCodes가 구석에 항상있는 경우 QR 대한

for (int pg = 0; pg < inputDocument.PageCount; pg++) 
      { 

       string workGif = workingFilename.Replace(".pdf", string.Format(".{0}.gif", pg + 1)); 
       GhostscriptWrapper.GeneratePageThumb(workingFilename, workGif, pg + 1, 300, 300); // size (last two params) does not seem to have any effect 
       using (var fullImg = new Bitmap(workGif)) 
       { 
         Bitmap result = fullImg.Clone(new System.Drawing.Rectangle(0, 0, 375, 375), fullImg.PixelFormat); 
         string QRinfo = Process(result); 
         MessageBox.Show(QRinfo); 

         string[] qcode = QRinfo.Split('/'); 
         string gid = qcode[qcode.Count() - 1]; 
         Guid pgGuid = new Guid(gid); 
       }   
      } 

처리 방법은

public string Process(Bitmap bitmap) 
    { 
     var reader = new com.google.zxing.qrcode.QRCodeReader(); 

     try 
     { 
      LuminanceSource source = new RGBLuminanceSource(bitmap, bitmap.Width, bitmap.Height); 
      var binarizer = new HybridBinarizer(source); 
      var binBitmap = new BinaryBitmap(binarizer); 
      return reader.decode(binBitmap).Text; 
     } 
     catch (Exception e) 
     { 
      return e.Message; 
     } 
    } 
+0

정확하게 이것을 달성 할 수있는 것은 무엇입니까? 사각형은 Point와 Size를 가지며 Point는 항상 왼쪽 위의 위치를 ​​고려하여 계산됩니다. – GuFigueiredo

+0

@GuFigueiredo 페이지에서 qr 코드를 감지하는 방법을 알아 내려고하고 위치에 따라 qr 코드가 왼쪽 상단 구석에 오도록 회전하려고합니다. 전체 페이지에서 qr 코드를 찾고 회전 할 위치를 찾는 방법은 무엇입니까? – Masriyah

+0

자세한 정보를 제공해 줄 수 있습니까? qr 코드가 Windows Form에 있거나 ASP.NET 페이지입니까? 이러한 요소가 컨트롤에 어떻게로드되어 있습니까? – GuFigueiredo

답변

0

, 당신은 비트 맵의에 PictureBox를 사용할 수 있으며, 다음은 RotateFlip 방법을 사용하여 회전 :

Bitmap bp = new Bitmap("myImage.jpg"); 
pictureBox1.Image = bp; 
bp.RotateFlip(RotateFlipType.Rotate90FlipNone); 
pictureBox1.Invalidate(); 
+0

나는 picturebox를 사용하지 않으므로 rotateflip을 사용할 수 있기 때문에 사용하지 않을 것입니까? – Masriyah

+0

RotateFlip으로 테스트를 할 수 있습니다. RotateFlip은 PictureBox가 아닌 Bitmap의 메서드이기 때문에 작동한다고 생각합니다. – GuFigueiredo

+0

이 작동하지만 회전 문제를 해결 한 후 원래 문제로 되돌립니다. 그것은 원래의 이미지를 프로세스 메소드에 전달합니다. – Masriyah