2012-07-03 43 views
1

我正在使用网络摄像头的安全摄像头应用程序,该摄像头每隔x毫秒用户选择一张照片就会拍摄一张照片。 (默认值为2000毫秒或2秒)目前,这些文件默认存储在用户的硬盘上。VB.NET保存图像作为日期

我想要做的不是将它保存为1.bmp,2.bmp,3.bmp等:但是到日期和时间,例如。 “Jul 03 12:14:53.bmp”使用此 - DateTime.Now.ToString(“MMM dd hh:mm:ss”)

但是很明显,我没有运气,并继续得到错误。所以这里是我的代码之前,我得到了所有这些错误,任何帮助将不胜感激。谢谢!

Dim frame As Integer 

Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick 
    frame += 1 

    Dim r As RECT = New RECT() 

    GetWindowRect(hWnd, r) 

    Dim cWidth As Integer = r.right - r.left 
    Dim cHeight As Integer = r.bottom - r.top 

    Dim bmp As Bitmap = New Bitmap(cWidth, cHeight) 

    Dim gfx As Graphics = Graphics.FromImage(bmp) 
    Dim gHdc As IntPtr = gfx.GetHdc() 

    'refresh the image 
    SendMessage(hWnd, WM_CAP_GRAB_FRAME, IntPtr.Zero, IntPtr.Zero) 

    PrintWindow(hWnd, gHdc, 0) 
    gfx.ReleaseHdc(gHdc) 
    gfx.Dispose() 

    bmp.Save("photos-taken\" & frame & ".bmp") 

    bmp.Dispose() 
End Sub 

Private Sub RecordToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RecordToolStripMenuItem.Click 
    If Not Directory.Exists("photos-taken") Then 
     Directory.CreateDirectory("photos-taken") 
    End If 

    If RecordToolStripMenuItem.Checked = False Then 
     RecordToolStripMenuItem.Checked = True 
     frame = 0 
     Timer2.Interval = 2000 
     Timer2.Start() 
    Else 
     RecordToolStripMenuItem.Checked = False 
     frame = 0 
     Timer2.Stop() 
    End If 
End Sub 
+0

什么是错误? –

回答

5
bmp.Save("photos-taken\" & DateTime.Now.ToString("yyyy-MM-dd_HHmmss") & ".bmp") 

您可以代替任何日期格式,这是一个有效的文件名(即不/\:),也使用YYYYMMDDHHMMSS你为了它们保存得按名称排序文件。