Если вы устанавливаете WIA 2.0 (требуется XP SP1, предварительно установленный в Vista и Windows 7), вы можете сделать это:
Private Sub Command1_Click()
Dim imfSubject As WIA.ImageFile
Dim vecProperty As WIA.Vector
Dim propEach As WIA.Property
With CommonDialog1
.CancelError = True
.DialogTitle = "Select JPEG Image"
.Filter = "JPEG Image (*.jpg, *.jpeg)|*.jpg;*.jpeg|" _
& "GIF Image (*.gif)|*.gif|" _
& "PNG Image (*.png)|*.png"
.FilterIndex = 1
.Flags = cdlOFNExplorer _
Or cdlOFNFileMustExist _
Or cdlOFNLongNames _
Or cdlOFNPathMustExist _
Or cdlOFNShareAware
.InitDir = strStartDir
On Error Resume Next
.ShowOpen
If Err.Number = cdlCancel Then Exit Sub
On Error GoTo 0
Log "Photo " & .FileName, ClearLog:=True
Log
End With
Set imfSubject = New WIA.ImageFile
With imfSubject
On Error Resume Next
.LoadFile (CommonDialog1.FileName)
If Err.Number <> 0 Then
Log "Error &H" & Hex$(Err.Number) & " (" & CStr(Err.Number) & ") in " _
& Err.Source
Log Err.Description
Err.Clear
Exit Sub
End If
Log "Width = " & .Width
Log "Height = " & .Height
Log "Depth = " & .PixelDepth
Log "HorizontalResolution = " & .HorizontalResolution
Log "VerticalResolution = " & .VerticalResolution
Log "FrameCount = " & .FrameCount
If .IsIndexedPixelFormat Then
Log "Pixel data contains palette indexes"
End If
If .IsAlphaPixelFormat Then
Log "Pixel data has alpha information"
End If
If .IsExtendedPixelFormat Then
Log "Pixel data has extended color information (16 bit/channel)"
End If
If .IsAnimated Then
Log "Image is animated"
End If
For Each propEach In .Properties
Select Case propEach.Name
Case "40091"
Set vecProperty = propEach.Value
Log "Title = " & vecProperty.String
Case "40092"
Set vecProperty = propEach.Value
Log "Comment = " & vecProperty.String
Case "40093"
Set vecProperty = propEach.Value
Log "Author = " & vecProperty.String
Case "40094"
Set vecProperty = propEach.Value
Log "Keywords = " & vecProperty.String
Case "40095"
Set vecProperty = propEach.Value
Log "Subject = " & vecProperty.String
Case Else
Log propEach.Name & " = " & CStr(propEach.Value)
End Select
Next
End With
End Sub
В коде предполагается, что strStartDir - это глобальная строка, установленная в начальную папку для просмотра, и что для регистрации результатов имеется подпрограмма Log
). Результаты выдаются на основе информации в файле изображения, например:
Photo C:\Users\George\Pictures\Phone\IMAG0005.jpg
Width = 1600
Height = 1200
Depth = 24
HorizontalResolution = 96
VerticalResolution = 96
FrameCount = 1
EquipMake = HTC
EquipModel = VOGU100
XResolution = 72
YResolution = 72
ResolutionUnit = 2
DateTime = 2010:05:17 11:54:38
Artist = Bob Riemersma
ExifDTOrig = 2010:05:17 11:54:38
ExifFlash = 0
ExifPixXDim = 1600
ExifPixYDim = 1200
ExifColorSpace = -1
ExifDTDigitized = 2010:05:17 11:54:38
ThumbnailImageWidth = 160
ThumbnailImageHeight = 120
ThumbnailCompression = 6
JPEGInterFormat = 368
Вы также можете использовать объект Shell для извлечения значений Windows для этих значений диалогового окна «Свойства», но это может быть неожиданным, так как разные версии Windows помещают их в разные места участвующей коллекции.