ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 186|回复: 4

遍历图片,如何判断错误图片。

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-4-17 14:13 | 显示全部楼层 |阅读模式
image.png



  1. ''
  2. Function TraverseFile(oFolder As Folder, Dict As Dictionary)
  3.     Dim oFile As File
  4.        For Each oFile In oFolder.Files
  5.            If InStr(UCase(oFile.Name), "IMG") > 0 Or InStr(UCase(oFile.Name), "SCREEN") > 0 Then
  6.                 Set Dict(oFile.Path) = oFile
  7.                 'Set Dict = TraverseFile(oFile, Dict)
  8.            End If
  9.        Next oFile
  10.         ''
  11.         Set TraverseFile = Dict
  12. End Function
复制代码





TA的精华主题

TA的得分主题

发表于 2024-4-17 14:49 | 显示全部楼层
判断是否为图片还是用TYPE吧,你这枚举难免有遗漏

TA的精华主题

TA的得分主题

发表于 2024-4-17 20:31 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
可通过文件头判断是否为图片文件

TA的精华主题

TA的得分主题

发表于 2024-4-17 20:32 | 显示全部楼层
这个AI代码。。。
Function IsPictureFile(filePath As String) As Boolean
    Dim fileNumber As Integer
    Dim fileHeader As String
    Dim pictureHeaders As Variant
    Dim i As Integer
   
    ' 文件描述符
    fileNumber = FreeFile()
   
    ' 打开文件用于二进制读取
    Open filePath For Binary As #fileNumber
   
    ' 读取前8个字节(通常足够判断文件类型)
    fileHeader = Space$(8)
    Get #fileNumber, 1, fileHeader
   
    ' 关闭文件
    Close #fileNumber
   
    ' 图片文件头部信息
    pictureHeaders = Array( _
        "FFD8FFE0", "FFD8FFE1", "FFD8FFE8", "FFD9", "89504E47", _
        "47494638", "0A000200", "00000022", "00000018", "49492A00", _
        "424D", "4D42", "414331303130313800", "000001BA", "000001B3")
   
    ' 判断文件头是否匹配图片文件头部信息
    For i = LBound(pictureHeaders) To UBound(pictureHeaders)
        If HexToString(Left$(fileHeader, Len(pictureHeaders(i)))) = pictureHeaders(i) Then
            IsPictureFile = True
            Exit Function
        End If
    Next i
   
    IsPictureFile = False
End Function

' 将十六进制字符串转换为二进制字符串
Function HexToString(hexStr As String) As String
    Dim i As Integer
    Dim bStr As String
    For i = 1 To Len(hexStr) Step 2
        bStr = bStr & Chr$("&H" & Mid$(hexStr, i, 2))
    Next i
    HexToString = bStr
End Function

评分

3

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-4-18 09:18 | 显示全部楼层
gwjkkkkk 发表于 2024-4-17 20:32
这个AI代码。。。
Function IsPictureFile(filePath As String) As Boolean
    Dim fileNumber As Integ ...

谢谢指点和回复,按现在图片处理知识水平很难消化理解。必须花时间和精力,慢慢消化理解。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-17 15:58 , Processed in 0.038101 second(s), 15 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表