我用Winform做了个摄像头拍照功能,请问我如何把拍下来的照片保存到同一个项目的文件夹中。

塘栖小斌斌 2014-08-17 05:32:42
我用Winform做了个摄像头拍照功能,请问我如何把拍下来的照片保存到同一个项目的文件夹中。比如我在项目的根目录下创建了一个“image”文件夹,我要把拍下来的照片放到到这个文件夹当中,请问要怎么解决?

在这里先谢谢各位帮忙了,很急。
...全文
482 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhuonenghu 2014-09-16
  • 打赏
  • 举报
回复
您好,能分享一下您的源码吗,可否发给我 2850129352@qq.com 感激不尽
塘栖小斌斌 2014-08-18
  • 打赏
  • 举报
回复


我取到的照片是这个类型的,怎么用Image.save()?
塘栖小斌斌 2014-08-18
  • 打赏
  • 举报
回复
那个问题解决了,现在又有一个新的问题,当我关闭摄像头后有黑色的一块,
塘栖小斌斌 2014-08-18
  • 打赏
  • 举报
回复
也不对啊,保存不进去。
save4me 2014-08-18
  • 打赏
  • 举报
回复
你这个函数就是保存,保存的路径就是你函数的参数path。比如

GrabImage(AppDomain.CurrentDomain.BaseDirectory + "image\" + "图片名称.jpg");
引用 4 楼 u014486245 的回复:
我取到的照片是这个类型的,怎么用Image.save()?
save4me 2014-08-17
  • 打赏
  • 举报
回复
你用的什么拍照,如果是系统字段的API,可以参考下面的代码

	public class VideoAPI
	{
		// 视频API调用
		[DllImport("avicap32.dll")]
		public static extern IntPtr capCreateCaptureWindowA(byte[] lpszWindowName,
		                                                    int dwStyle, int x, int y, int nWidth, int nHeight,
		                                                    IntPtr hWndParent, int nID);

		[DllImport("avicap32.dll")]
		public static extern bool capGetDriverDescriptionA(short wDriver,
		                                                   byte[] lpszName, int cbName, byte[] lpszVer, int cbVer);

		[DllImport("User32.dll")]
		public static extern bool SendMessage(IntPtr hWnd, int wMsg,
		                                      bool wParam, int lParam);

		[DllImport("User32.dll")]
		public static extern bool SendMessage(IntPtr hWnd, int wMsg,
		                                      short wParam, int lParam);

		// 常量
//		public const int WM_USER = 0x400;
//		public const int WS_CHILD = 0x40000000;
//		public const int WS_VISIBLE = 0x10000000;
//		public const int SWP_NOMOVE = 0x2;
//		public const int SWP_NOZORDER = 0x4;
//		public const int WM_CAP_DRIVER_CONNECT = WM_USER + 10;
//		public const int WM_CAP_DRIVER_DISCONNECT = WM_USER + 11;
//		public const int WM_CAP_SET_CALLBACK_FRAME = WM_USER + 5;
//		public const int WM_CAP_SET_PREVIEW = WM_USER + 50;
//		public const int WM_CAP_SET_PREVIEWRATE = WM_USER + 52;
//		public const int WM_CAP_SET_VIDEOFORMAT = WM_USER + 45;
//		public const int WM_CAP_START = WM_USER;
//		public const int WM_CAP_SAVEDIB = WM_CAP_START + 25;
		
		public const int WM_USER = 0x400;
		public const int WS_CHILD = 0x40000000;
		public const int WS_VISIBLE = 0x10000000;
		public const int WM_CAP_START = WM_USER;
		public const int WM_CAP_STOP = WM_CAP_START + 68;
		public const int WM_CAP_DRIVER_CONNECT = WM_CAP_START + 10;
		public const int WM_CAP_DRIVER_DISCONNECT = WM_CAP_START + 11;
		public const int WM_CAP_SAVEDIB = WM_CAP_START + 25;
		public const int WM_CAP_GRAB_FRAME = WM_CAP_START + 60;
		public const int WM_CAP_SEQUENCE = WM_CAP_START + 62;
		public const int WM_CAP_FILE_SET_CAPTURE_FILEA = WM_CAP_START + 20;
		public const int WM_CAP_SEQUENCE_NOFILE =WM_CAP_START+ 63;
		public const int WM_CAP_SET_OVERLAY =WM_CAP_START+ 51;
		public const int WM_CAP_SET_PREVIEW =WM_CAP_START+ 50;
		public const int WM_CAP_SET_CALLBACK_VIDEOSTREAM = WM_CAP_START +6;
		public const int WM_CAP_SET_CALLBACK_ERROR=WM_CAP_START +2;
		public const int WM_CAP_SET_CALLBACK_STATUSA= WM_CAP_START +3;
		public const int WM_CAP_SET_CALLBACK_FRAME= WM_CAP_START +5;
		public const int WM_CAP_SET_SCALE=WM_CAP_START+ 53;
		public const int WM_CAP_SET_PREVIEWRATE=WM_CAP_START+ 52;
	}
调用

		///   <summary>
		///   拍照
		///   </summary>
		///   <param   name="path">要保存bmp文件的路径</param>
		public void GrabImage(IntPtr hWndC, string path)
		{
			IntPtr hBmp = Marshal.StringToHGlobalAnsi(path);
			VideoAPI.SendMessage(lwndC, VideoAPI.WM_CAP_SAVEDIB, 0, hBmp.ToInt32());
		}
全栈极简 2014-08-17
  • 打赏
  • 举报
回复
得到Image,然后调用Save方法。http://www.3lian.com/edu/2014/02-18/129462.html
ZhongGuanYao 2014-08-17
  • 打赏
  • 举报
回复
string path = Application.StartupPath + "\\image";//根目录下的image文件夹 if (Directory.Exists(path) == false) {//判断目录是否存在 Directory.CreateDirectory(path); } string fileName="img" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".png"//给照片文件命名 image.Save(path+"\\"+fileName);//保存照片文件,其中image是你的摄像头拍照出来的图片

110,557

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧