Foxtable(狐表)用户栏目专家坐堂 → 如何获取照片的拍摄时间


  共有2514人关注过本帖树形打印复制链接

主题:如何获取照片的拍摄时间

帅哥哟,离线,有人找我吗?
有点甜
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/2/27 11:12:00 [显示全部帖子]


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/2/27 14:19:00 [显示全部帖子]

试试

 

For Each r As Row In Tables("图片库")
    If r("扩展名")=".JPG"  AndAlso r.Isnull("拍摄时间") Then
        Dim img As Image = Image.FromFile(r("路径"))
        Dim pt As PropertyItem() = img.PropertyItems
        For i As Integer = 0 To pt.Length - 1
            Dim p As PropertyItem = pt(i)
            Select Case pt(i).Id
                'Case &H132
                    'Dim s As String = System.Text.Encoding.ASCII.GetString(p.value)
                    'Output.Show("修改时间:  " & s)
                    'Output.Show("")
                Case &H9003
                    Dim s As String = System.Text.Encoding.ASCII.GetString(p.value)
                    ‘Output.Show(r.Index & "拍摄时间:  " & s)
                    ’Output.Show("")
                    r("拍摄时间")=s
                'Case &H110
                    'Dim s As String = System.Text.Encoding.ASCII.GetString(p.value)
                    'Output.Show("相机型号:  " & s)
                    'Output.Show("")
                'Case &H10F
                    'Dim s As String = System.Text.Encoding.ASCII.GetString(p.value)
                    'Output.Show("制造商:  " & s)
                    'Output.Show("")
                    '
                'Case  &H131
                    'Dim s As String = System.Text.Encoding.ASCII.GetString(p.value)
                    'Output.Show("修改软件:  " & s)
                    'Output.Show("")
                    
            End Select
        Next
        img.dispose
    End If
Next

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/2/28 10:08:00 [显示全部帖子]

以下是引用rjh4078在2018/2/27 20:03:00的发言:
现在可以了 有个新问题 如何用多线程来运行这个代码? 我想把10万张分成100个线程来处理,现在这个会导致程序卡死无响应。

 

建议还是这样写代码,处理的时候,加上 Application.DoEvents 应该就可以了,如

 

For i As Integer = 1 To 1000
    CurrentTable.addnew
    Application.DoEvents
Next


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/2/28 11:28:00 [显示全部帖子]

以下是引用有点甜在2018/2/28 10:08:00的发言:

 

建议还是这样写代码,处理的时候,加上 Application.DoEvents 应该就可以了,如

 

For i As Integer = 1 To 1000
    CurrentTable.addnew
    Application.DoEvents
Next

 

最简单就是这样做。如果你处理图片的时候,需要把数据填入到foxtable表格里面,也只能这样做。不能用多线程的。


 回到顶部