스캔 한 문서의 모든 구석에 이미지를 가져 오려고합니다 (왼쪽 위, 오른쪽, 왼쪽 아래 및 오른쪽). 아래는 어떻게 구현하려고하지만, 저장된 이미지를 보았을 때 모든 다른 부분이지만 전체 문서가 아닌 왼쪽 위 모서리 만 보입니다. 이걸 어떻게 바꿀 수 있겠 니?올바르게 지정한 위치에 Drawing.Rectangle 사용 C# winforms
Bitmap result = fullImg;
//top-left
var bandImg1 = result.Clone(new System.Drawing.Rectangle(0, 0, 375, 375), fullImg.PixelFormat);
//top-right
var bandImg2 = result.Clone(new System.Drawing.Rectangle(100, 50, 375, 375), fullImg.PixelFormat);
//bottom-left
var bandImg3 = result.Clone(new System.Drawing.Rectangle(0, 50, 375, 375), fullImg.PixelFormat);
//bottom-right
var bandImg4 = result.Clone(new System.Drawing.Rectangle(100, 100, 375, 375), fullImg.PixelFormat);
bandImg1.Save("c:\\bandImg1.gif", System.Drawing.Imaging.ImageFormat.Gif);
bandImg2.Save("c:\\bandImg2.gif", System.Drawing.Imaging.ImageFormat.Gif);
bandImg3.Save("c:\\bandImg3.gif", System.Drawing.Imaging.ImageFormat.Gif);
bandImg4.Save("c:\\bandImg4.gif", System.Drawing.Imaging.ImageFormat.Gif);
----- 추가와 업데이트 코드
Bitmap result = fullImg;
//top-left
var bandImg1 = result.Clone(new System.Drawing.Rectangle(0, 0, result.Width/2, result.Height/2), fullImg.PixelFormat);
//top-right
var bandImg2 = result.Clone(new System.Drawing.Rectangle(result.Width/2, 0, result.Width/2, result.Height/2), fullImg.PixelFormat);
//bottom-left
var bandImg3 = result.Clone(new System.Drawing.Rectangle(0, result.Height/2, result.Width/2, result.Height/2), fullImg.PixelFormat);
//bottom-right
var bandImg4 = result.Clone(new System.Drawing.Rectangle(result.Width/2, result.Height/2, result.Width/2, result.Height/2), fullImg.PixelFormat);
bandImg1.Save("c:\\bandImg1.gif", System.Drawing.Imaging.ImageFormat.Gif);
bandImg2.Save("c:\\bandImg2.gif", System.Drawing.Imaging.ImageFormat.Gif);
bandImg3.Save("c:\\bandImg3.gif", System.Drawing.Imaging.ImageFormat.Gif);
bandImg4.Save("c:\\bandImg4.gif", System.Drawing.Imaging.ImageFormat.Gif);
string QRinfo = Process(bandImg1);
처리 방법은 아래 답변을 ------에 따라 :
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;
}
}
하드 코드 된 숫자 대신 비트 맵 '너비'및 '높이'속성을 사용하십시오. – sparky68967
@ sparky68967 페이지 너비와 높이를 사용할 때 메모리 부족 메시지가 나타납니다. 나는 각 구석의 특정 크기를 얻고 싶지만 내 포인트가 맞습니까? – Masriyah
글쎄, 제대로 된 것 같지만 점수를 하드 코딩하는 것은 나쁜 생각이다. 예외를 제공하는 코드를 게시해야합니다. 모서리를 계산하기 위해 너비와 높이를 사용하는 경우 전체 문서를 가져 오는 것을 보장하는 유일한 방법입니다. – sparky68967