摄像头抓拍失败

水晶烟灰缸 2010-08-01 09:21:02
摄像头抓拍第一次OK,但第二次就失败,关闭程序再开,还是第一次OK,第二次失败

导致原因:
抓拍保存的文件被占用,无法释放,求救哥们怎么办

    
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'strfile 保存路径
Dim strFile As String = "c:\1"
'抓拍摄像头
Dim hBmp As IntPtr = Marshal.StringToHGlobalAnsi(strFile & ".bmp")
SendMessage(hWndC, WM_CAP_SAVEDIB, 0, hBmp.ToInt64())
'压缩图片
Dim sBmp As Bitmap = Bitmap.FromFile(strFile & ".bmp")
sBmp.Save(strFile & ".jpg", Imaging.ImageFormat.Jpeg)
End Sub
...全文
350 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
兔子-顾问 2010-08-02
  • 打赏
  • 举报
回复
内存中都是位图。保存的时候才有格式选择。你这样做没错。
水晶烟灰缸 2010-08-01
  • 打赏
  • 举报
回复
楼上的,解决了,谢谢啊
顺便问一句能否直接将
Dim bmpData As Byte() = IO.File.ReadAllBytes(strFile & ".bmp")

bmpdata直接转化为JPG格式的二进制数组啊
兔子-顾问 2010-08-01
  • 打赏
  • 举报
回复
try
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'strfile 保存路径
Dim strFile As String = "c:\1"
'抓拍摄像头
Dim hBmp As IntPtr = Marshal.StringToHGlobalAnsi(strFile & ".bmp")
SendMessage(hWndC, WM_CAP_SAVEDIB, 0, hBmp.ToInt64())
'压缩图片
Dim bmpData As Byte() = IO.File.ReadAllBytes(strFile & ".bmp")
Dim ms As New IO.MemoryStream(bmpData)
Dim sBmp As Bitmap = Bitmap.FromStream(ms)
sBmp.Save(strFile & ".jpg", Imaging.ImageFormat.Jpeg)
End Sub
水晶烟灰缸 2010-08-01
  • 打赏
  • 举报
回复
错误提示是文件正在被另一个进程使用
但是代码就只有这几句,
当sBmp另存图片以后就将文件删除
但是不知道怎么释放正在被占用的文件
一克代码 2010-08-01
  • 打赏
  • 举报
回复
判断一下图片是否存在

存在删除

或者重命名图片!

用时间起名

16,553

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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