Извлечь свойства из файла изображения - PullRequest
2 голосов
/ 08 мая 2011

Есть ли способ извлечь свойства файла изображения из vb 6.0?Я хочу просмотреть конкретную фотографию и затем извлечь свойства, подобные приведенным ниже, из любого формата изображения.

enter image description here

1 Ответ

5 голосов
/ 09 мая 2011

Если вы устанавливаете 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 помещают их в разные места участвующей коллекции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...