c# 摄像头截图 如何改变截图的大小? 100
在网上找的例子截出来的图片都是横宽的我想要竖长型的而且都是640*480分辨率的图片900K多我想控制图片大小在20k左右代码如下SendMessage如何使用谢谢!//...
在网上找的例子截出来的图片都是横宽的 我想要竖长型的 而且都是640*480分辨率的 图片900K多 我想控制图片大小在20k左右
代码如下 SendMessage 如何使用 谢谢!
/// <summary>
/// 开始显示图像
/// </summary>
public void Start()
{
if (bStat)
return;
bStat = true;
byte[] lpszName = new byte[50];
hWndC = capCreateCaptureWindowA(lpszName, WS_CHILD | WS_VISIBLE, mLeft, mTop, mWidth, mHeight, mControlPtr, 0);
if (hWndC.ToInt32() != 0)
{
SendMessage(hWndC, WM_CAP_SET_CALLBACK_VIDEOSTREAM, 0, 0);//设置回调视频流
SendMessage(hWndC, WM_CAP_SET_CALLBACK_ERROR, 0, 0);//设置回调错误
SendMessage(hWndC, WM_CAP_SET_CALLBACK_STATUSA, 0, 0);//设置回调状态
SendMessage(hWndC, WM_CAP_DRIVER_CONNECT, 0, 0);//驱动程序连接
SendMessage(hWndC, WM_CAP_SET_SCALE, 2, 0);//设置预览视频的缩放比例
SendMessage(hWndC, WM_CAP_SET_PREVIEWRATE, 66, 0);//设置预览模式下图像的帧速度
SendMessage(hWndC, WM_CAP_SET_OVERLAY, 1, 0);//设置覆盖
SendMessage(hWndC, WM_CAP_SET_PREVIEW, 1, 0);//设置预览模式
}
return;
}
/// <summary>
/// 抓图
/// </summary>
/// <param name="path">要保存bmp文件的路径</param>
public void GrabImage(string path)
{
IntPtr hBmp = Marshal.StringToHGlobalAnsi(path);
SendMessage(hWndC, WM_CAP_SAVEDIB, 0, hBmp.ToInt64());
} 展开
代码如下 SendMessage 如何使用 谢谢!
/// <summary>
/// 开始显示图像
/// </summary>
public void Start()
{
if (bStat)
return;
bStat = true;
byte[] lpszName = new byte[50];
hWndC = capCreateCaptureWindowA(lpszName, WS_CHILD | WS_VISIBLE, mLeft, mTop, mWidth, mHeight, mControlPtr, 0);
if (hWndC.ToInt32() != 0)
{
SendMessage(hWndC, WM_CAP_SET_CALLBACK_VIDEOSTREAM, 0, 0);//设置回调视频流
SendMessage(hWndC, WM_CAP_SET_CALLBACK_ERROR, 0, 0);//设置回调错误
SendMessage(hWndC, WM_CAP_SET_CALLBACK_STATUSA, 0, 0);//设置回调状态
SendMessage(hWndC, WM_CAP_DRIVER_CONNECT, 0, 0);//驱动程序连接
SendMessage(hWndC, WM_CAP_SET_SCALE, 2, 0);//设置预览视频的缩放比例
SendMessage(hWndC, WM_CAP_SET_PREVIEWRATE, 66, 0);//设置预览模式下图像的帧速度
SendMessage(hWndC, WM_CAP_SET_OVERLAY, 1, 0);//设置覆盖
SendMessage(hWndC, WM_CAP_SET_PREVIEW, 1, 0);//设置预览模式
}
return;
}
/// <summary>
/// 抓图
/// </summary>
/// <param name="path">要保存bmp文件的路径</param>
public void GrabImage(string path)
{
IntPtr hBmp = Marshal.StringToHGlobalAnsi(path);
SendMessage(hWndC, WM_CAP_SAVEDIB, 0, hBmp.ToInt64());
} 展开
4个回答
展开全部
如果摄像头给你只给你返回640*480的图片,又不支持图片参数可选,你可以试着自己把640*480的图片缩略成160*120(<20K)的,算法也不难,就是在原图上每4像素取一个像素画新图。然后存新图就好了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
/// <summary>
/// 从视频中截取图片,调用GetNewImage方法,自定义图片大小,返回Bitmap格式图片
/// </summary>
/// <returns></returns>
private Bitmap GetImage()
{
Bitmap bitmap;
try
{
CameraForm.SendMessage(this.hHwnd, 0x41e, 0, 0);
IDataObject obj1 = Clipboard.GetDataObject();
if (obj1.GetDataPresent(typeof(Bitmap)))
{
bitmap= (Bitmap)obj1.GetData(typeof(Bitmap));
GetNewImage(bitmap,300,300)//自定图片大小
}
}
catch
{
}
return bitmap;
}
/// <summary>
/// 对图片进行处理,返回一个Image类别的对象
/// </summary>
/// <param name="oldImgPath">原图片路径</param>
/// <param name="newWidth">新图片宽度</param>
/// <param name="newHeight">新图片高度</param>
/// <returns></returns>
private Image GetNewImage(Bitmap bmap, int newWidth, int newHeight)
{
Image oldImg = bmap;
Image newImg = oldImg.GetThumbnailImage(newWidth, newHeight, new Image.GetThumbnailImageAbort(IsTrue), IntPtr.Zero); // 对原图片进行缩放
return newImg;
}
/// 从视频中截取图片,调用GetNewImage方法,自定义图片大小,返回Bitmap格式图片
/// </summary>
/// <returns></returns>
private Bitmap GetImage()
{
Bitmap bitmap;
try
{
CameraForm.SendMessage(this.hHwnd, 0x41e, 0, 0);
IDataObject obj1 = Clipboard.GetDataObject();
if (obj1.GetDataPresent(typeof(Bitmap)))
{
bitmap= (Bitmap)obj1.GetData(typeof(Bitmap));
GetNewImage(bitmap,300,300)//自定图片大小
}
}
catch
{
}
return bitmap;
}
/// <summary>
/// 对图片进行处理,返回一个Image类别的对象
/// </summary>
/// <param name="oldImgPath">原图片路径</param>
/// <param name="newWidth">新图片宽度</param>
/// <param name="newHeight">新图片高度</param>
/// <returns></returns>
private Image GetNewImage(Bitmap bmap, int newWidth, int newHeight)
{
Image oldImg = bmap;
Image newImg = oldImg.GetThumbnailImage(newWidth, newHeight, new Image.GetThumbnailImageAbort(IsTrue), IntPtr.Zero); // 对原图片进行缩放
return newImg;
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用Photoshop
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Photoshop
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询