我正在使用DirecShowLib-2005.Dll从我的笔记本电脑摄像头拍照。最初我使用的图像大小为640 x 840.这些配置在我正在使用的示例中给出
const int VIDEODEVICE = 0;
const int VIDEOWIDTH = 640;
const int VIDEOHEIGHT = 480;
const int VIDEOBITSPERPIXEL = 24;
在声明Capture对象时传递这些值,即
cam = new Capture(VIDEODEVICE, VIDEOWIDTH, VIDEOHEIGHT, VIDEOBITSPERPIXEL, picCamera);
每件事都很好。但是我想用Passport Size拍照,即宽度更小,高度更高。当我改变常量的宽度和高度时DLL停止工作。有人请指导我如何改变宽度和高度?
答案 0 :(得分: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;
}