2013-10-28 1 views
1

내 노트북 ​​웹캠에서 사진을 찍으려면 DirecShowLib-2005.Dll을 사용하고 있습니다. 처음에 나는 그것이DirectShow를 사용하여 이미지 캡처 크기 변경

cam = new Capture(VIDEODEVICE, VIDEOWIDTH, VIDEOHEIGHT, VIDEOBITSPERPIXEL, picCamera); 

모든 일이 잘 작동, 즉 캡처 객체를 선언하면서이 값이 전달됩니다

const int VIDEODEVICE = 0; 
    const int VIDEOWIDTH = 640; 
    const int VIDEOHEIGHT = 480; 
    const int VIDEOBITSPERPIXEL = 24; 

같이 이러한 구성은 내가 사용하고 그 예에 주어진 640 × 840 이미지 크기를 사용하고 있습니다 . 그러나 여권 크기로 사진을 찍고 싶습니다. 즉, 너비가 적고 높이가 더 큽니다. 언제 내가 너비와 상수의 높이를 변경하면 DLL이 작동을 멈 춥니 다. 누구든지 폭과 높이를 어떻게 바꿀 수 있는지 안내해 주시겠습니까?

답변

1

카메라의 설정에 정의 된 해상도로 변경할 수 있습니다. 예를 들어 320x240 등. 스냅 샷 이미지를 만들 때 Bitmap 객체의 크기를 조정하고 그 크기를자를 수 있습니다. 예를 들어 다음 코드를 사용했습니다.

IntPtr m_ip = IntPtr.Zero; 
m_ip = capture.Click(); 
Bitmap b = new Bitmap(640, 480, capture.Stride, PixelFormat.Format24bppRgb, m_ip); 
b = ResizeBitmap(b,220,220); //The size of your box 
b.RotateFlip(RotateFlipType.RotateNoneFlipY); 
pictureBox2.Image = b; 

private static Bitmap ResizeBitmap(Bitmap sourceBMP, int width, int height) 
{ 
    Bitmap result = new Bitmap(width, height); 
    using (Graphics g = Graphics.FromImage(result)) 
    g.DrawImage(sourceBMP, 0, 0, width, height); 
    return result; 
} 
관련 문제