加入收藏 | 设为首页 | 会员中心 | 我要投稿 | RSS
当前位置: 首页  文集文档  实用存档

在网页上显示照片exif信息的ASP代码

时间:2008-09-12 00:00:00  来源:TIANZI.ORG  作者:天子  阅读:1439次
显示效果:

代码如下:

<!-- 把代码中Exif.asp?f_id=100_2515.JPG改成你自己的图片地址 -->
<%
Response.charset = "gb2312"
'********************************************************************************
'类名:Cls_Exif
'功能:获取图片信息
'返回:用|分隔的字符串
'********************************************************************************
const IFD_IDX_Tag_No = 0
const IFD_IDX_Tag_Name = 1
const IFD_IDX_Data_Format = 2
const IFD_IDX_Components = 3
const IFD_IDX_Value = 4
const IFD_IDX_Value_Desc = 5
const IFD_IDX_OffsetToValue = 6
'********************************************************************************
'函数名:
'功    能:
'参    数:
'返    回:
'********************************************************************************
Class Cls_Exif
Private ExifLookup
Private Offset_to_IFD0
Private Offset_to_APP1
Private Offset_to_TIFF
Private Length_of_APP1
Private Offset_to_Next_IFD
Private IFDDirectory
Private Offset_to_ExifSubIFD
Private ImageFileName
Private IsLoaded
Private ExifTemp
'********************************************************************************
'函数名:Class_Initialize
'功    能:类初始化,不需要调用,这是一个构造函数
'返    回:无
'********************************************************************************
Private Sub Class_Initialize()
    set ExifLookup = Server.CreateObject("Scripting.Dictionary")
    '定义字典
    'IFD0 Tags
    ExifLookup.Add "Image Description", "010E"
    ExifLookup.Add "Camera Make", "010F"
    ExifLookup.Add "Camera Model", "0110"
    ExifLookup.Add "Orientation", "0112"
    ExifLookup.Add "X Resolution", "011A"
    ExifLookup.Add "Y Resolution", "011B"
    ExifLookup.Add "Resolution Unit", "0128"
    ExifLookup.Add "Software", "0131"
    ExifLookup.Add "Date Time", "0132"
    ExifLookup.Add "White Point", "013E"
    ExifLookup.Add "Primary Chromaticities", "013F"
    ExifLookup.Add "YCbCr Coefficients", "0211"
    ExifLookup.Add "YCbCr Positioning", "0213"
    ExifLookup.Add "Reference Black White", "0214"
    ExifLookup.Add "Copyright", "8298"
    ExifLookup.Add "Exif Offset", "8769"
    'ExifSubIFD Tags
    ExifLookup.Add "Exposure Time", "829A"
    ExifLookup.Add "FStop", "829D"
    ExifLookup.Add "Exposure Program", "8822"
    ExifLookup.Add "ISO Speed Ratings", "8827"
    ExifLookup.Add "Exif Version", "9000"
    ExifLookup.Add "Date Time Original", "9003"
    ExifLookup.Add "Date Time Digitized", "9004"
    ExifLookup.Add "Components Configuration", "9101"
    ExifLookup.Add "Compressed Bits Per Pixel", "9102"
    ExifLookup.Add "Shutter Speed Value", "9201"
    ExifLookup.Add "Aperture Value", "9202"
    ExifLookup.Add "Brightness Value", "9203"
    ExifLookup.Add "Exposure Bias Value", "9204"
    ExifLookup.Add "Max Aperture Value", "9205"
    ExifLookup.Add "Subject Distance", "9206"
    ExifLookup.Add "Metering Mode", "9207"
    ExifLookup.Add "Light Source", "9208"
    ExifLookup.Add "Flash", "9209"
    ExifLookup.Add "Focal Length", "920A"
    ExifLookup.Add "Maker Note", "927C"
    ExifLookup.Add "User Comment", "9286"
    ExifLookup.Add "Subsec Time", "9290"
    ExifLookup.Add "Subsec Time Original", "9291"
    ExifLookup.Add "Subsec Time Digitized", "9292"
    ExifLookup.Add "Flash Pix Version", "A000"
    ExifLookup.Add "Color Space", "A001"
    ExifLookup.Add "Exif Image Width", "A002"
    ExifLookup.Add "Exif Image Height", "A003"
    ExifLookup.Add "Related Sound File", "A004"
    ExifLookup.Add "Exif Interoperability Offset", "A005"
    ExifLookup.Add "Focal Plane X Resolution", "A20E"
    ExifLookup.Add "Focal Plane Y Resolution", "A20F"
    ExifLookup.Add "Focal Plane Resolution Unit", "A210"
    ExifLookup.Add "Exposure Index", "A215"
    ExifLookup.Add "Sensing Method", "A217"
    ExifLookup.Add "File Source", "A300"
    ExifLookup.Add "Scene Type", "A301"
    ExifLookup.Add "CFA Pattern", "A302"
    'Interoperability IFD Tags
    ExifLookup.Add "Interoperability Index", "01"
    ExifLookup.Add "Interoperability Version", "02"
    ExifLookup.Add "Related Image File Format", "1000"
    ExifLookup.Add "Related Image Width", "1001"
    ExifLookup.Add "Related Image Length", "1002"
    'IFD1 Tags
    ExifLookup.Add "Image Width", "0100"
    ExifLookup.Add "Image Height", "0101"
    ExifLookup.Add "Bits Per Sample", "0102"
    ExifLookup.Add "Compression", "0103"
    ExifLookup.Add "Photometric Interpretation", "0106"
    ExifLookup.Add "Strip Offsets", "0111"
    ExifLookup.Add "Sample Per Pixel", "0115"
    ExifLookup.Add "Rows Per Strip", "0116"
    ExifLookup.Add "Strip Byte Counts", "0117"
    ExifLookup.Add "X Resolution 2", "011A"
    ExifLookup.Add "Y Resolution 2", "011B"
    ExifLookup.Add "Planar Configuration", "011C"
    ExifLookup.Add "Resolution Unit 2", "0128"
    ExifLookup.Add "JPEG Interchange Format", "0201"
    ExifLookup.Add "JPEG Interchange Format Length", "0202"
    ExifLookup.Add "YCbCr Coeffecients", "0211"
    ExifLookup.Add "YCbCr Sub Sampling", "0212"
    ExifLookup.Add "YCbCr Positioning 2", "0213"
    ExifLookup.Add "Reference Black White 2", "0214"
    'Misc Tags
    ExifLookup.Add "New Subfile Type", "FE"
    ExifLookup.Add "Subfile Type", "FF"
    ExifLookup.Add "Transfer Function", "012D"
    ExifLookup.Add "Artist", "013B"
    ExifLookup.Add "Predictor", "013D"
    ExifLookup.Add "Tile Width", "0142"
    ExifLookup.Add "Tile Length", "0143"
    ExifLookup.Add "Tile Offsets", "0144"
    ExifLookup.Add "Tile Byte Counts", "0145"
    ExifLookup.Add "Sub IFDs", "014A"
    ExifLookup.Add "JPEG Tables", "015B"
    ExifLookup.Add "CFA Repeat Pattern Dim", "828D"
    ExifLookup.Add "CFA Pattern 2", "828E"
    ExifLookup.Add "Battery Level", "828F"
    ExifLookup.Add "IPTC_NAA", "83BB"
    ExifLookup.Add "Inter Color Profile", "8773"
    ExifLookup.Add "Spectral Sensitivity", "8824"
    ExifLookup.Add "GPS Info", "8825"
    ExifLookup.Add "OECF", "8828"
    ExifLookup.Add "Interlace", "8829"
    ExifLookup.Add "Time Zone Offset", "882A"
    ExifLookup.Add "Self Timer Mode", "882B"
    ExifLookup.Add "Flash Energy", "920B"
    ExifLookup.Add "Spatial Frequency Response", "920C"
    ExifLookup.Add "Noise", "920D"
    ExifLookup.Add "Image Number", "9211"
    ExifLookup.Add "Security Classification", "9212"
    ExifLookup.Add "Image History", "9213"
    ExifLookup.Add "Subject Location", "9214"
    ExifLookup.Add "Exposure Index 2", "9215"
    ExifLookup.Add "TIFFEP Standard ID", "9216"
    ExifLookup.Add "Flash Energy 2", "A20B"
    ExifLookup.Add "Spatial Frequency Response 2", "A20C"
    ExifLookup.Add "Subject Location 2", "A214"
    ExifTemp=array(0)
    IFDDirectory = array(0)
End Sub
 
Private Sub class_terminate()
End Sub

Public Property Let ImageFile(ByVal vNewValue)
    ImageFileName = vNewValue
    LoadImage ImageFileName
End Property

Public Property Get ImageFile()
    ImageFile=ImageFileName
End Property

Public Function LookupExifTag(which)
    dim item
    for each item in ExifLookup
        if ExifLookup(item) = which then
            LookupExifTag = item
            Exit Function
         End If
    Next
    LookupExifTag = which
End Function
'********************************************************************************
'函数名:hasExifInfo
'功    能:检测是否存在Exif信息
'参    数:无
'返    回:无
'********************************************************************************
Public Function hasExifInfo()
    If IsLoaded = False Or ImageFileName = "" Then
        hasExifInfo = False
    ElseIf UBound(IFDDirectory)<1 Then
        hasExifInfo = False
    Else
        hasExifInfo = True
    End If
End Function
'********************************************************************************
'函数名:GetExifByName
'功    能:获取图片的指定Exif字段
'参    数:ExifTag    Exif字段的标志,具体内容参考类初始化代码
'返    回:返回图片的指定Exif字段
'********************************************************************************
Public Function GetExifByName(ExifTag)
    Dim i
    If IsLoaded = False And ImageFileName <> "" Then
        LoadImage (ImageFileName)
    ElseIf IsLoaded = False And ImageFileName = "" Then
        Exit Function
    End If
    For i = 0 To UBound(IFDDirectory) - 1
        If IFDDirectory(i)(IFD_IDX_Tag_Name) = ExifTag Then
            If IFDDirectory(i)(IFD_IDX_Value_Desc) <> "" then
                GetExifByName = IFDDirectory(i)(IFD_IDX_Value_Desc)
            Else
                GetExifByName = IFDDirectory(i)(IFD_IDX_Value)
            End if
            Exit For
         End If
    Next
End Function
'********************************************************************************
'函数名:LoadImage
'功    能:读入图片
'参    数:picFile    图片地址
'返    回:无
'********************************************************************************
Private sub LoadImage(picFile)
    If ImageFileName = "" Then
        ImageFileName = ""
        If ImageFileName = "" Then
            Exit sub
         End If
    End If
    OpenJPGFile ImageFileName
    If InspectJPGFile = False Then
        IsLoaded = False
        Exit Sub
    End If
    If IsIntel Then
        Offset_to_IFD0 = ByteToLong(ExifTemp(Offset_to_APP1 + 17), ExifTemp(Offset_to_APP1 + 16), ExifTemp(Offset_to_APP1 + 15), ExifTemp(Offset_to_APP1 + 14))
    Else
        Offset_to_IFD0 = ByteToLong(ExifTemp(Offset_to_APP1 + 14), ExifTemp(Offset_to_APP1 + 15), ExifTemp(Offset_to_APP1 + 16), ExifTemp(Offset_to_APP1 + 17))
    End If
    IsLoaded = True
    GetDirectoryEntries Offset_to_TIFF + Offset_to_IFD0
    MakeSenseOfMeaninglessValues
End sub

Private Function InspectJPGFile()
    Dim i
    If UBound(ExifTemp)<=0 Then
        InspectJPGFile = False
        Exit Function
    End if
    If ExifTemp(0) <> &HFF And ExifTemp(1) <> &HD8 Then
        InspectJPGFile = False
    Else
        For i = 2 To UBound(ExifTemp) - 1
            If ExifTemp(i) = &HFF And ExifTemp(i + 1) = &HE1 Then
                Offset_to_APP1 = i
                Exit For
            End If
         Next
        If Offset_to_APP1 = 0 Then
            InspectJPGFile = False
        End If
        Offset_to_TIFF = Offset_to_APP1 + 10
        Length_of_APP1 = ByteToInt(ExifTemp(Offset_to_APP1 + 2), ExifTemp(Offset_to_APP1 + 3))
        If Not (ExifTemp(Offset_to_APP1 + 4) = ASC("E") And ExifTemp(Offset_to_APP1 + 5) = ASC("x") And ExifTemp(Offset_to_APP1 + 6) = ASC("i") And ExifTemp(Offset_to_APP1 + 7) = ASC("f")) Then
            InspectJPGFile = False
            Exit Function
        End If
        InspectJPGFile = True
    End If
End Function
 
 Private Function IsIntel()
    If ExifTemp(Offset_to_TIFF) = &H49 Then
     IsIntel = True
    Else
     IsIntel = False
    End If
 End Function
 
 Private Function OpenJPGFile(FileName)
    const TristateUseDefault = -2
    const TristateTrue = -1
    const TristateFalse = 0
    const ForReading = 1
    const ForWriting = 2
    const ForAppending = 8

    Dim Ascii, LastByte, CurByte, SOSFound
    Dim FSO, File, i

    If Not FileName = "" Then
     If InStr(1, FileName, ":") = 0 Then
        FileName = Server.MapPath(FileName)
     End If
     Set FSO = Server.CreateObject("Scripting.FileSystemObject")
     If FSO.FileExists(FileName) Then
        Set File = Server.CreateObject("ADODB.Stream")
         File.Type = 1
         File.Mode = 3
         File.Open 
        File.LoadFromFile FileName
        i = 0
        While Not File.EOS and SOSFound = false
         Ascii = ascb(File.Read(1))
         LastByte = CurByte
         CurByte = Ascii
         if (LastByte = &HFF and CurByte = &HDA) or i > 100000 then
            SOSFound = true
         end if
         ExifTemp(i) = CurByte
         i = i + 1
                 ReDim Preserve ExifTemp(i)
        Wend
        File.Close
        Set File = Nothing
     End If
     Set FSO = Nothing
    End If
 end function

 Private Sub GetDirectoryEntries(Offset)
    const ExifOffset = "8769"
    const MakerNote = "927C"
    
    const m_BYTE = 1
    const m_STRING = 2
    const m_SHORT = 3
    const m_LONG = 4
    const m_RATIONAL = 5
    const m_SBYTE = 6
    const m_UNDEFINED = 7
    const m_SSHORT = 8
    const m_SLONG = 9
    const m_SRATIONAL = 10
    const m_SINGLE = 11
    const m_DOUBLE = 12
    
    Dim No_of_Entries
    Dim Upper_IFDDirectory
    Dim NewDimensions
    Dim Processed_ExifSubIFD
    Dim BytesPerComponent
    Dim Offset_to_MakerNote
    Dim i, j, k
    Do
     If IsIntel Then
        No_of_Entries = ByteToInt(ExifTemp(Offset + 1), ExifTemp(Offset + 0))
     Else
        No_of_Entries = ByteToInt(ExifTemp(Offset + 0), ExifTemp(Offset + 1))
     End If
     On Error Resume Next
     Upper_IFDDirectory = UBound(IFDDirectory)
     On Error GoTo 0
     NewDimensions = Upper_IFDDirectory + No_of_Entries
     ReDim Preserve IFDDirectory(NewDimensions)
     For i = 1 To No_of_Entries
        k = Upper_IFDDirectory + i - 1
        IFDDirectory(k) = array(null,null,null,null,null,null,null)
        If IsIntel Then
         IFDDirectory(k)(IFD_IDX_Tag_No) = Hex0(ExifTemp((Offset + 2) + ((i - 1) * 12) + 1)) & Hex0(ExifTemp((Offset + 2) + ((i - 1) * 12) + 0))
         IFDDirectory(k)(IFD_IDX_Data_Format) = ByteToInt(ExifTemp((Offset + 2) + ((i - 1) * 12) + 3), ExifTemp((Offset + 2) + ((i - 1) * 12) + 2))
         IFDDirectory(k)(IFD_IDX_Components) = ByteToLong(ExifTemp((Offset + 2) + ((i - 1) * 12) + 7), ExifTemp((Offset + 2) + ((i - 1) * 12) + 6), ExifTemp((Offset + 2) + ((i - 1) * 12) + 5), ExifTemp((Offset + 2) + ((i - 1) * 12) + 4))
         Select Case IFDDirectory(k)(IFD_IDX_Data_Format)
         Case m_BYTE, m_SBYTE
            BytesPerComponent = 1
            If IFDDirectory(k)(IFD_IDX_Components) * BytesPerComponent <= 4 Then
             IFDDirectory(k)(IFD_IDX_OffsetToValue) = 0
             IFDDirectory(k)(IFD_IDX_Value) = ByteToByte((Offset + 2) + ((i - 1) * 12) + 8, (Offset + 2) + ((i - 1) * 12) + 8 + IFDDirectory(k)(IFD_IDX_Components) - 1)
            Else
             IFDDirectory(k)(IFD_IDX_OffsetToValue) = ByteToLong(ExifTemp((Offset + 2) + ((i - 1) * 12) + 11), ExifTemp((Offset + 2) + ((i - 1) * 12) + 10), ExifTemp((Offset + 2) + ((i - 1) * 12) + 9), ExifTemp((Offset + 2) + ((i - 1) * 12) + 8))
             If Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) < UBound(ExifTemp) Then
                IFDDirectory(k)(IFD_IDX_Value) = ByteToByte(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue), Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + IFDDirectory(k)(IFD_IDX_Components) - 1)
             Else
                IFDDirectory(k)(IFD_IDX_Value) = "00"
             End if
            End If
         Case m_STRING, m_UNDEFINED
            BytesPerComponent = 1
            If IFDDirectory(k)(IFD_IDX_Components) * BytesPerComponent <= 4 Then
             IFDDirectory(k)(IFD_IDX_OffsetToValue) = 0
             IFDDirectory(k)(IFD_IDX_Value) = ByteToStr((Offset + 2) + ((i - 1) * 12) + 8, (Offset + 2) + ((i - 1) * 12) + 8 + IFDDirectory(k)(IFD_IDX_Components) - 1)
            Else
             IFDDirectory(k)(IFD_IDX_OffsetToValue) = ByteToLong(ExifTemp((Offset + 2) + ((i - 1) * 12) + 11), ExifTemp((Offset + 2) + ((i - 1) * 12) + 10), ExifTemp((Offset + 2) + ((i - 1) * 12) + 9), ExifTemp((Offset + 2) + ((i - 1) * 12) + 8))
             If Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) < UBound(ExifTemp) Then
                IFDDirectory(k)(IFD_IDX_Value) = ByteToStr(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue), Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + IFDDirectory(k)(IFD_IDX_Components) - 1)
             Else
                IFDDirectory(k)(IFD_IDX_Value) = ""
             End if
            End If
         Case m_SHORT, m_SSHORT
            BytesPerComponent = 2
            If IFDDirectory(k)(IFD_IDX_Components) * BytesPerComponent <= 4 Then
             Select Case IFDDirectory(k)(IFD_IDX_Components)
             Case 1
                IFDDirectory(k)(IFD_IDX_Value) = ByteToInt(ExifTemp((Offset + 2) + ((i - 1) * 12) + 9), ExifTemp((Offset + 2) + ((i - 1) * 12) + 8))
             Case 2
                IFDDirectory(k)(IFD_IDX_Value) = ByteToInt(ExifTemp((Offset + 2) + ((i - 1) * 12) + 11), ExifTemp((Offset + 2) + ((i - 1) * 12) + 10)) + ByteToInt(ExifTemp((Offset + 2) + ((i - 1) * 12) + 9), ExifTemp((Offset + 2) + ((i - 1) * 12) + 8))
             End Select
             IFDDirectory(k)(IFD_IDX_OffsetToValue) = 0
            Else
             IFDDirectory(k)(IFD_IDX_OffsetToValue) = ByteToLong(ExifTemp((Offset + 2) + ((i - 1) * 12) + 11), ExifTemp((Offset + 2) + ((i - 1) * 12) + 10), ExifTemp((Offset + 2) + ((i - 1) * 12) + 9), ExifTemp((Offset + 2) + ((i - 1) * 12) + 8))
             If Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) < UBound(ExifTemp) Then
                IFDDirectory(k)(IFD_IDX_Value) = ByteToByte(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue), Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + IFDDirectory(k)(IFD_IDX_Components) - 1)
             Else
                IFDDirectory(k)(IFD_IDX_Value) = 0
             End if
            End If
         Case m_LONG, m_SLONG
            BytesPerComponent = 4
            If IFDDirectory(k)(IFD_IDX_Components) * BytesPerComponent <= 4 Then
             IFDDirectory(k)(IFD_IDX_Value) = ByteToLong(ExifTemp((Offset + 2) + ((i - 1) * 12) + 11), ExifTemp((Offset + 2) + ((i - 1) * 12) + 10), ExifTemp((Offset + 2) + ((i - 1) * 12) + 9), ExifTemp((Offset + 2) + ((i - 1) * 12) + 8))
             IFDDirectory(k)(IFD_IDX_OffsetToValue) = 0
            Else
             IFDDirectory(k)(IFD_IDX_OffsetToValue) = ByteToLong(ExifTemp((Offset + 2) + ((i - 1) * 12) + 11), ExifTemp((Offset + 2) + ((i - 1) * 12) + 10), ExifTemp((Offset + 2) + ((i - 1) * 12) + 9), ExifTemp((Offset + 2) + ((i - 1) * 12) + 8))
             If Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) < UBound(ExifTemp) Then
                IFDDirectory(k)(IFD_IDX_Value) = ByteToByte(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue), Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + IFDDirectory(k)(IFD_IDX_Components) - 1)
             Else
                IFDDirectory(k)(IFD_IDX_Value) = 0
             End if
            End If
         Case m_RATIONAL, m_SRATIONAL
            BytesPerComponent = 8
            IFDDirectory(k)(IFD_IDX_OffsetToValue) = ByteToLong(ExifTemp((Offset + 2) + ((i - 1) * 12) + 11), ExifTemp((Offset + 2) + ((i - 1) * 12) + 10), ExifTemp((Offset + 2) + ((i - 1) * 12) + 9), ExifTemp((Offset + 2) + ((i - 1) * 12) + 8))
            If Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) < UBound(ExifTemp) Then
             IFDDirectory(k)(IFD_IDX_Value) = ByteToLong(ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 3), ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 2), ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 1), ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 0)) & "/" & ByteToLong(ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 7), ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 6), ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 5), ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 4))
            Else
             IFDDirectory(k)(IFD_IDX_Value) = "0/0"
            End If
         End Select
        Else
         IFDDirectory(k)(IFD_IDX_Tag_No) = Hex0(ExifTemp((Offset + 2) + ((i - 1) * 12) + 0)) & Hex0(ExifTemp((Offset + 2) + ((i - 1) * 12) + 1))
         IFDDirectory(k)(IFD_IDX_Data_Format) = ByteToInt(ExifTemp((Offset + 2) + ((i - 1) * 12) + 2), ExifTemp((Offset + 2) + ((i - 1) * 12) + 3))
         IFDDirectory(k)(IFD_IDX_Components) = ByteToLong(ExifTemp((Offset + 2) + ((i - 1) * 12) + 4), ExifTemp((Offset + 2) + ((i - 1) * 12) + 5), ExifTemp((Offset + 2) + ((i - 1) * 12) + 6), ExifTemp((Offset + 2) + ((i - 1) * 12) + 7))
         Select Case IFDDirectory(k)(IFD_IDX_Data_Format)
         Case m_BYTE, m_SBYTE
            BytesPerComponent = 1
            If IFDDirectory(k)(IFD_IDX_Components) * BytesPerComponent <= 4 Then
             IFDDirectory(k)(IFD_IDX_OffsetToValue) = 0
             IFDDirectory(k)(IFD_IDX_Value) = ByteToByte((Offset + 2) + ((i - 1) * 12) + 8, (Offset + 2) + ((i - 1) * 12) + 8 + IFDDirectory(k)(IFD_IDX_Components) - 1)
            Else
             IFDDirectory(k)(IFD_IDX_OffsetToValue) = ByteToLong(ExifTemp((Offset + 2) + ((i - 1) * 12) + 8), ExifTemp((Offset + 2) + ((i - 1) * 12) + 9), ExifTemp((Offset + 2) + ((i - 1) * 12) + 10), ExifTemp((Offset + 2) + ((i - 1) * 12) + 11))
             If Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) < UBound(ExifTemp) Then
                IFDDirectory(k)(IFD_IDX_Value) = ByteToByte(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue), Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + IFDDirectory(k)(IFD_IDX_Components) - 1)
             Else
                IFDDirectory(k)(IFD_IDX_Value) = "00"
             End If
            End If
         Case m_STRING, m_UNDEFINED
            BytesPerComponent = 1
            If IFDDirectory(k)(IFD_IDX_Components) * BytesPerComponent <= 4 Then
             IFDDirectory(k)(IFD_IDX_OffsetToValue) = 0
             IFDDirectory(k)(IFD_IDX_Value) = ByteToStr((Offset + 2) + ((i - 1) * 12) + 8, (Offset + 2) + ((i - 1) * 12) + 8 + IFDDirectory(k)(IFD_IDX_Components) - 1)
            Else
             IFDDirectory(k)(IFD_IDX_OffsetToValue) = ByteToLong(ExifTemp((Offset + 2) + ((i - 1) * 12) + 8), ExifTemp((Offset + 2) + ((i - 1) * 12) + 9), ExifTemp((Offset + 2) + ((i - 1) * 12) + 10), ExifTemp((Offset + 2) + ((i - 1) * 12) + 11))
             If Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) < UBound(ExifTemp) Then
                IFDDirectory(k)(IFD_IDX_Value) = ByteToStr(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue), Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + IFDDirectory(k)(IFD_IDX_Components) - 1)
             Else
                IFDDirectory(k)(IFD_IDX_Value) = ""
             End If
            End If
         Case m_SHORT, m_SSHORT
            BytesPerComponent = 2
            If IFDDirectory(k)(IFD_IDX_Components) * BytesPerComponent <= 4 Then
             Select Case IFDDirectory(k)(IFD_IDX_Components)
             Case 1
                IFDDirectory(k)(IFD_IDX_Value) = ByteToInt(ExifTemp((Offset + 2) + ((i - 1) * 12) + 8), ExifTemp((Offset + 2) + ((i - 1) * 12) + 9))
             Case 2
                IFDDirectory(k)(IFD_IDX_Value) = ByteToInt(ExifTemp((Offset + 2) + ((i - 1) * 12) + 8), ExifTemp((Offset + 2) + ((i - 1) * 12) + 9)) + ByteToInt(ExifTemp((Offset + 2) + ((i - 1) * 12) + 10), ExifTemp((Offset + 2) + ((i - 1) * 12) + 11))
             End Select
             IFDDirectory(k)(IFD_IDX_OffsetToValue) = 0
            Else
             IFDDirectory(k)(IFD_IDX_OffsetToValue) = ByteToLong(ExifTemp((Offset + 2) + ((i - 1) * 12) + 8), ExifTemp((Offset + 2) + ((i - 1) * 12) + 9), ExifTemp((Offset + 2) + ((i - 1) * 12) + 10), ExifTemp((Offset + 2) + ((i - 1) * 12) + 11))
             If Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) < UBound(ExifTemp) Then
                IFDDirectory(k)(IFD_IDX_Value) = ByteToByte(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + IFDDirectory(k)(IFD_IDX_Components) - 1, Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue))
             Else
                IFDDirectory(k)(IFD_IDX_Value) = 0
             End If
            End If
         Case m_LONG, m_SLONG
            BytesPerComponent = 4
            If IFDDirectory(k)(IFD_IDX_Components) * BytesPerComponent <= 4 Then
             IFDDirectory(k)(IFD_IDX_Value) = ByteToLong(ExifTemp((Offset + 2) + ((i - 1) * 12) + 8), ExifTemp((Offset + 2) + ((i - 1) * 12) + 9), ExifTemp((Offset + 2) + ((i - 1) * 12) + 10), ExifTemp((Offset + 2) + ((i - 1) * 12) + 11))
             IFDDirectory(k)(IFD_IDX_OffsetToValue) = 0
            Else
             IFDDirectory(k)(IFD_IDX_OffsetToValue) = ByteToLong(ExifTemp((Offset + 2) + ((i - 1) * 12) + 8), ExifTemp((Offset + 2) + ((i - 1) * 12) + 9), ExifTemp((Offset + 2) + ((i - 1) * 12) + 10), ExifTemp((Offset + 2) + ((i - 1) * 12) + 11))
             If Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) < UBound(ExifTemp) Then
                IFDDirectory(k)(IFD_IDX_Value) = ByteToByte(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + IFDDirectory(k)(IFD_IDX_Components) - 1, Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue))
             Else
                IFDDirectory(k)(IFD_IDX_Value) = 0
             End If
            End If
         Case m_RATIONAL, m_SRATIONAL
            BytesPerComponent = 8
            IFDDirectory(k)(IFD_IDX_OffsetToValue) = ByteToLong(ExifTemp((Offset + 2) + ((i - 1) * 12) + 8), ExifTemp((Offset + 2) + ((i - 1) * 12) + 9), ExifTemp((Offset + 2) + ((i - 1) * 12) + 10), ExifTemp((Offset + 2) + ((i - 1) * 12) + 11))
            If Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) < UBound(ExifTemp) Then
             IFDDirectory(k)(IFD_IDX_Value) = ByteToLong(ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 0), ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 1), ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 2), ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 3)) & "/" & ByteToLong(ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 4), ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 5), ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 6), ExifTemp(Offset_to_TIFF + IFDDirectory(k)(IFD_IDX_OffsetToValue) + 7))
            Else
             IFDDirectory(k)(IFD_IDX_Value) = "0/0"
            End If
         End Select
        End If
        If IFDDirectory(k)(IFD_IDX_Tag_No) = MakerNote Then
         Offset_to_MakerNote = IFDDirectory(k)(IFD_IDX_OffsetToValue)
        End If
        If IFDDirectory(k)(IFD_IDX_Tag_No) = ExifOffset Then
         Offset_to_ExifSubIFD = CLng(IFDDirectory(k)(IFD_IDX_Value))
        End If
        IFDDirectory(k)(IFD_IDX_Tag_Name) = LookupExifTag(IFDDirectory(k)(IFD_IDX_Tag_No))
     Next
     If IsIntel Then
        If Not Processed_ExifSubIFD Then
         Offset_to_Next_IFD = ByteToLong(ExifTemp(Offset + 2 + (No_of_Entries * 12) + 3), ExifTemp(Offset + 2 + (No_of_Entries * 12) + 2), ExifTemp(Offset + 2 + (No_of_Entries * 12) + 1), ExifTemp(Offset + 2 + (No_of_Entries * 12) + 0))
        Else
         Offset_to_Next_IFD = 0
        End If
     Else
        If Not Processed_ExifSubIFD Then
         Offset_to_Next_IFD = ByteToLong(ExifTemp(Offset + 2 + (No_of_Entries * 12) + 0), ExifTemp(Offset + 2 + (No_of_Entries * 12) + 1), ExifTemp(Offset + 2 + (No_of_Entries * 12) + 2), ExifTemp(Offset + 2 + (No_of_Entries * 12) + 3))
        Else
         Offset_to_Next_IFD = 0
        End If
     End If
     If Offset_to_Next_IFD = 0 And Processed_ExifSubIFD = False Then
        Offset_to_Next_IFD = Offset_to_ExifSubIFD
        Processed_ExifSubIFD = True
     ElseIf Processed_ExifSubIFD = False Then
        If Offset_to_TIFF + Offset_to_Next_IFD + 2 > UBound(ExifTemp) Then
         Offset_to_Next_IFD = Offset_to_ExifSubIFD
         Processed_ExifSubIFD = True
        End If
     End If
     Offset = Offset_to_TIFF + Offset_to_Next_IFD
    Loop While Offset_to_Next_IFD <> 0
    If Offset_to_MakerNote <> 0 Then
     'ProcessMakerNote Offset_to_MakerNote + Offset_to_TIFF
    End If
 End Sub

 Private Function Hex0(nValue)
    Hex0 = Right("00" & Hex(nValue), 2)
 End Function
 
 Private Function ByteToInt(Byte1, Byte2)
    If Byte1 < 128 Then
     ByteToInt = Byte1 * 256 + Byte2
    Else
     ByteToInt = Byte2 - (256 - Byte1) * 256
    End If
 End Function
 
 Private Function ByteToLong(Byte1, Byte2, Byte3, Byte4)
    If Byte1 < 128 Then
     ByteToLong = ((Byte1 * 256 + Byte2) * 256 + Byte3) * 256 + Byte4
    Else
     ByteToLong = Byte4 - (((256 - Byte1) * 256 - Byte2) * 256 - Byte3) * 256
    End If
 End Function

 Private Function ByteToStr(StartOffset, EndOffset)
    Dim i
    ByteToStr = ""
    If StartOffset > EndOffset Then
     For i = StartOffset To EndOffset Step -1
        If ExifTemp(i) = 0 Then Exit For
        If i > EndOffset Then
         If ExifTemp(i) >= 128 and ExifTemp(i - 1) >= 128 Then
            ByteToStr = ByteToStr & Chr(ByteToInt(ExifTemp(i), ExifTemp(StartOffset + i - 1)))
            i = i - 1
         Else
            ByteToStr = ByteToStr & Chr(ExifTemp(i))
         End If
        Else
         ByteToStr = ByteToStr & Chr(ExifTemp(i))
        End If
     Next
    Else
     For i = StartOffset To EndOffset
        If ExifTemp(i) = 0 Then Exit For
        If i < EndOffset Then
         If ExifTemp(i) >= 128 and ExifTemp(i + 1) >= 128 Then
            ByteToStr = ByteToStr & Chr(ByteToInt(ExifTemp(i), ExifTemp(i + 1)))
            i = i + 1
         Else
            ByteToStr = ByteToStr & Chr(ExifTemp(i))
         End If
        Else
         ByteToStr = ByteToStr & Chr(ExifTemp(i))
        End If
     Next
    End If
 End Function
 
 Private Function ByteToByte(StartOffset, EndOffset)
    Dim i
    
    ByteToByte = ""
    If StartOffset > EndOffset Then
     For i = StartOffset To EndOffset Step -1
        If ByteToByte <> "" Then ByteToByte = ByteToByte & " "
        ByteToByte = ByteToByte & Hex0(ExifTemp(i))
     Next
    Else
     For i = StartOffset To EndOffset
        If ByteToByte <> "" Then ByteToByte = ByteToByte & " "
        ByteToByte = ByteToByte & Hex0(ExifTemp(i))
     Next
    End If
 End Function

 Private Function MakeSenseOfMeaninglessValues()
    Dim x
    Dim TagValues
    
    For x = 0 To ubound(IFDDirectory) - 1
     Select Case IFDDirectory(x)(IFD_IDX_Tag_Name)
     Case "Orientation"
        TagValues = array("未知","上左","上右", "下右", "下左", "左上", "右上", "右下", "左下")
        If IFDDirectory(x)(IFD_IDX_Value)>=0 and IFDDirectory(x)(IFD_IDX_Value)<ubound(TagValues) Then
         IFDDirectory(x)(IFD_IDX_Value_Desc) = TagValues(IFDDirectory(x)(IFD_IDX_Value))
        Else
         IFDDirectory(x)(IFD_IDX_Value_Desc) = "未知"
        End if
     Case "Metering Mode"
        TagValues = array("未知","平均","偏中心平均", "点", "多点", "图案", "部分")
        If IFDDirectory(x)(IFD_IDX_Value)>=0 and IFDDirectory(x)(IFD_IDX_Value)<ubound(TagValues) Then
         IFDDirectory(x)(IFD_IDX_Value_Desc) = TagValues(IFDDirectory(x)(IFD_IDX_Value))
        Else
         IFDDirectory(x)(IFD_IDX_Value_Desc) = "未知"
        End if
     Case "FStop"
        TagValues = Split(IFDDirectory(x)(IFD_IDX_Value), "/")
        If UBound(TagValues) = 1 Then
         If CLng(TagValues(1))<>0 Then
            If (CLng(TagValues(0)) Mod CLng(TagValues(1))) = 0 Then
             IFDDirectory(x)(IFD_IDX_Value_Desc) = "F/" & (CLng(TagValues(0)) CLng(TagValues(1)))
            Else
             IFDDirectory(x)(IFD_IDX_Value_Desc) = "F/" & Round(CLng(TagValues(0)) / CLng(TagValues(1)),1)
            End If
         End If
        End if
     Case "Exposure Time"
        TagValues = Split(IFDDirectory(x)(IFD_IDX_Value), "/")
        If UBound(TagValues) = 1 Then
         If CLng(TagValues(1))<>0 Then
            If CLng(TagValues(1)) > CLng(TagValues(0)) Then
             If (CLng(TagValues(1)) Mod CLng(TagValues(0))) = 0 Then
                IFDDirectory(x)(IFD_IDX_Value_Desc) = "1/" & (CLng(TagValues(1)) CLng(TagValues(0))) & " 秒"
             Else
                IFDDirectory(x)(IFD_IDX_Value_Desc) = "1/" & Round(CLng(TagValues(1)) / CLng(TagValues(0)),1) & " 秒"
             End If
            Else
             If (CLng(TagValues(0)) Mod CLng(TagValues(1))) = 0 Then
                IFDDirectory(x)(IFD_IDX_Value_Desc) = CLng(TagValues(0)) CLng(TagValues(1)) & " 秒"
             Else
                IFDDirectory(x)(IFD_IDX_Value_Desc) = Round(CLng(TagValues(0)) / CLng(TagValues(1)),1) & " 秒"
             End If
            End if
         End if
        End if
     Case "Flash"
        If (IFDDirectory(x)(IFD_IDX_Value) Mod 2) = 0 Then
         IFDDirectory(x)(IFD_IDX_Value_Desc) = "关"
        Else
         IFDDirectory(x)(IFD_IDX_Value_Desc) = "开"
        End If
        TagValues = IFDDirectory(x)(IFD_IDX_Value) 2
        If (TagValues Mod 4) = 2 Then
         IFDDirectory(x)(IFD_IDX_Value_Desc) = IFDDirectory(x)(IFD_IDX_Value_Desc) & "[无选通返回]"
        ElseIf (TagValues Mod 4) = 3 Then
         IFDDirectory(x)(IFD_IDX_Value_Desc) = IFDDirectory(x)(IFD_IDX_Value_Desc) & "[带选通返回]"
        End If
        TagValues = TagValues 4
        If (TagValues Mod 4) = 1 Then
         IFDDirectory(x)(IFD_IDX_Value_Desc) = IFDDirectory(x)(IFD_IDX_Value_Desc) & "[强制闪光]"
        ElseIf (TagValues Mod 4) = 2 Then
         IFDDirectory(x)(IFD_IDX_Value_Desc) = IFDDirectory(x)(IFD_IDX_Value_Desc) & "[强制关闭]"
        ElseIf (TagValues Mod 4) = 3 Then
         IFDDirectory(x)(IFD_IDX_Value_Desc) = IFDDirectory(x)(IFD_IDX_Value_Desc) & "[自动闪光]"
        End If
        TagValues = TagValues 4
        If (TagValues Mod 2) = 1 Then
         IFDDirectory(x)(IFD_IDX_Value_Desc) = IFDDirectory(x)(IFD_IDX_Value_Desc) & "[无闪光灯]"
        End If
        TagValues = TagValues 2
        If (TagValues Mod 2) = 1 Then
         IFDDirectory(x)(IFD_IDX_Value_Desc) = IFDDirectory(x)(IFD_IDX_Value_Desc) & "[去红眼]"
        End If
     Case "Exposure Bias Value"
        TagValues = Split(IFDDirectory(x)(IFD_IDX_Value),"/")
        If UBound(TagValues) = 1 Then
         If CLng(TagValues(1))<>0 Then
            If CLng(TagValues(0)) > 0 Then 
             IFDDirectory(x)(IFD_IDX_Value_Desc) = "+ "
            ElseIf CLng(TagValues(0)) = 0 then
             IFDDirectory(x)(IFD_IDX_Value_Desc) = "0"
            Else
             IFDDirectory(x)(IFD_IDX_Value_Desc) = "- "
            End If
            If TagValues(0)<>0 Then
             If CLng(Abs(TagValues(0))) < CLng(Abs(TagValues(1))) And CLng(TagValues(0)) <> 0 Then IFDDirectory(x)(IFD_IDX_Value_Desc) = IFDDirectory(x)(IFD_IDX_Value_Desc) & "0"
             IFDDirectory(x)(IFD_IDX_Value_Desc) = IFDDirectory(x)(IFD_IDX_Value_Desc) & Round(CLng(Abs(TagValues(0))) / CLng(Abs(TagValues(1))),1)
            End If
            IFDDirectory(x)(IFD_IDX_Value_Desc) = IFDDirectory(x)(IFD_IDX_Value_Desc) & "EV"
         End If
        End if
     Case "Focal Length"
        TagValues = Split(IFDDirectory(x)(IFD_IDX_Value),"/")
        If UBound(TagValues) = 1 Then
         If CLng(TagValues(1))<>0 Then
            IFDDirectory(x)(IFD_IDX_Value_Desc) = Round(CLng(TagValues(0)) / CLng(TagValues(1)),1)
         End If
        End If
        IFDDirectory(x)(IFD_IDX_Value_Desc) = IFDDirectory(x)(IFD_IDX_Value_Desc) & " 毫米"
     End Select
    Next
 End Function
End Class
%>





<%
'********************************************************************************
'函数名:GetImageExifInfo
'功  能:获取基本的Exif信息
'参  数:PicURL 文件路径,相对路径
'返  回:用|分隔的字符串
'********************************************************************************
Function GetImageExifInfo(PicURL)
    Dim TempStr, TempSplit
    Dim ExifInfo


    set ExifInfo = new Cls_Exif
    On Error Resume Next
    ExifInfo.ImageFile = Server.MapPath(PicURL)
    If Err<>0 Then
        Err.Clear
        On Error Goto 0
        Set ExifInfo = Nothing
        GetImageExifInfo = ""
        Exit Function
    Else
         On Error Goto 0
    End if
    if ExifInfo.hasExifInfo() and ExifInfo.GetExifByName("Camera Make")<>"" then
        TempStr = ExifInfo.GetExifByName("Camera Make")
        GetImageExifInfo = ExifItem(TempStr)
        TempStr = ExifInfo.GetExifByName("Camera Model")
        GetImageExifInfo = GetImageExifInfo & "|" & ExifItem(TempStr)
        TempStr = ExifInfo.GetExifByName("Date Time Original")
        If Left(TempStr, 4) = "0000" Then
            TempStr = ExifInfo.GetExifByName("Date Time Digitized")
        End If
        If Left(TempStr, 4) = "0000" Then
            TempStr = ExifInfo.GetExifByName("Date Time")
        End If
        If Left(TempStr, 4) = "0000" Then
            TempStr = ""
        End If
        GetImageExifInfo = GetImageExifInfo & "|" & ExifItem(TempStr)
        TempStr = ExifInfo.GetExifByName("Exif Image Width")
        TempSplit = ExifInfo.GetExifByName("Exif Image Height")
        if TempStr <> "" and TempSplit<>"" then
            TempStr = TempStr & " × " & TempSplit
        else
            TempStr = ""
        end if
        GetImageExifInfo = GetImageExifInfo & "|" & ExifItem(TempStr)
        TempStr = ExifInfo.GetExifByName("Software")
        GetImageExifInfo = GetImageExifInfo & "|" & ExifItem(TempStr)
        TempStr = ExifInfo.GetExifByName("ISO Speed Ratings")
        GetImageExifInfo = GetImageExifInfo & "|" & ExifItem(TempStr)
        TempStr = ExifInfo.GetExifByName("FStop")
        GetImageExifInfo = GetImageExifInfo & "|" & ExifItem(TempStr)
        TempStr = ExifInfo.GetExifByName("Exposure Time")
        GetImageExifInfo = GetImageExifInfo & "|" & ExifItem(TempStr)
        TempStr = ExifInfo.GetExifByName("Flash")
        GetImageExifInfo = GetImageExifInfo & "|" & ExifItem(TempStr)
        TempStr = ExifInfo.GetExifByName("Exposure Bias Value")
        GetImageExifInfo = GetImageExifInfo & "|" & ExifItem(TempStr)
        TempStr = ExifInfo.GetExifByName("Focal Length")
        GetImageExifInfo = GetImageExifInfo & "|" & ExifItem(TempStr)
        TempStr = ExifInfo.GetExifByName("Metering Mode")
        GetImageExifInfo = GetImageExifInfo & "|" & ExifItem(TempStr)
    else
        GetImageExifInfo = ""
    end if
    Set ExifInfo = Nothing
End Function

Function GetAllExifInfo(PicURL)
    set ExifInfo = new Cls_Exif
    On Error Resume Next
    ExifInfo.ImageFile = Server.MapPath(PicURL)
    GetAllExifInfo=ExifInfo.ExifAllInfo()
    Set ExifInfo = Nothing
End Function

Function GetHexInfo(PicURL)
    set ExifInfo = new Cls_Exif
    On Error Resume Next
    ExifInfo.ImageFile = Server.MapPath(picURL)
    GetHexInfo=ExifInfo.ExifAllInfo2()
    Set ExifInfo = Nothing
End Function

Function ExifItem(ItemValue)
    if ItemValue <> "" then
        ExifItem = ExifItem & Server.HtmlEnCode(ItemValue)
    else
        ExifItem = ExifItem & "未知"
    end if
End Function
%>


<%
dim F_Name
F_Name=request.querystring("ph_id")
%>



<%

'F_Name = "tianzi.JPG"
Exif = GetImageExifInfo(F_Name)
If Trim(Exif) <> "" Then
    ExifSplit=Split(Exif,"|")
%>
<body text="#FFFFFF" bgcolor="#000000" topmargin="0" bottommargin="0" style="font-family: 宋体; font-size: 8pt">

<div align="center">


<table style="border-collapse: collapse" border="0" bordercolor="#333333">
    <tr>
        <td class="TBBG1" style="width:20px" rowspan="4"><img src=img/exif.gif></td>
        <td class="TBBG1" style="width:60px"><font face="宋体" color="#A0BDFF">
        <span style="font-size: 9pt">相机品牌</span></td>
        <td class="TBBG9" style="width:160px"><span style="font-size: 9pt">
        <font color="#A0BDFF"><%=ExifSplit(0)%></font></span></td>
        <td class="TBBG1" style="width:60px"><font color="#A0BDFF"><span style="font-size: 9pt">相机型号</span></font></td>
        <td class="TBBG9" style="width:120px"><span style="font-size: 9pt">
        <font color="#A0BDFF"><%=ExifSplit(1)%></font></span></td>
        <td class="TBBG1" style="width:60px"><font color="#A0BDFF"><span style="font-size: 9pt">拍摄时间</span></font></td>
        <td class="TBBG9" style="width:140px"><span style="font-size: 9pt">
        <font color="#A0BDFF"><%=ExifSplit(2)%></font></span></td>
    </tr>
    <tr>
        <td class="TBBG1"><font color="#A0BDFF"><span style="font-size: 9pt">照片尺寸</span></font></td>
        <td class="TBBG9"><span style="font-size: 9pt"><font color="#A0BDFF"><%=ExifSplit(3)%></font></span></td>
        <td class="TBBG1"><font color="#A0BDFF"><span style="font-size: 9pt">编辑工具</span></font></td>
        <td class="TBBG9"><span style="font-size: 9pt"><font color="#A0BDFF"><%=ExifSplit(4)%></font></span></td>
        <td class="TBBG1"><font color="#A0BDFF"><span style="font-size: 9pt">ISO 速度</span></font></td>
        <td class="TBBG9"><span style="font-size: 9pt"><font color="#A0BDFF"><%=ExifSplit(5)%></font></span></td>
    </tr>
    <tr>
        <td class="TBBG1"><font color="#A0BDFF"><span style="font-size: 9pt">光&nbsp;&nbsp;&nbsp;&nbsp; 圈</span></font></td>
        <td class="TBBG9"><span style="font-size: 9pt"><font color="#A0BDFF"><%=ExifSplit(6)%></font></span></td>
        <td class="TBBG1"><font color="#A0BDFF"><span style="font-size: 9pt">曝光时间</span></font></td>
        <td class="TBBG9"><span style="font-size: 9pt"><font color="#A0BDFF"><%=ExifSplit(7)%></font></span></td>
        <td class="TBBG1"><font color="#A0BDFF"><span style="font-size: 9pt">闪 光 灯</span></font></td>
        <td class="TBBG9"><span style="font-size: 9pt"><font color="#A0BDFF"><%=ExifSplit(8)%></font></span></td>
    </tr>
    <tr>
        <td class="TBBG1"><font color="#A0BDFF"><span style="font-size: 9pt">曝光补偿</span></font></td>
        <td class="TBBG9"><span style="font-size: 9pt"><font color="#A0BDFF"><%=ExifSplit(9)%></font></span></td>
        <td class="TBBG1"><font color="#A0BDFF"><span style="font-size: 9pt">焦&nbsp;&nbsp;&nbsp; 距</span></font></td>
        <td class="TBBG9"><span style="font-size: 9pt"><font color="#A0BDFF"><%=ExifSplit(10)%></font></span></td>
        <td class="TBBG1"><font color="#A0BDFF"><span style="font-size: 9pt">测距模式</span></font></td>
        <td class="TBBG9"><span style="font-size: 9pt"><font color="#A0BDFF"><%=ExifSplit(11)%></font></span></font></td>
    </tr>
</table></div>

<%
Else%>
<body bgcolor="#000000" topmargin="0" bottommargin="0" style="font-family: 宋体; font-size: 8pt">


<div align="center">


<table style="border-collapse: collapse" border="0" bordercolor="#333333">
    <tr>
        <td class="TBBG1" style="width:20px" rowspan="3"><img src=img/exif.gif></td>
        <td class="TBBG1" width="610">.</td>
    </tr>
    <tr>
        <td class="TBBG1"><p align="center"><font color="#A0BDFF" style="font-size: 9pt">--== 该照片不存在Exif信息 ==--</font>
 
</p></td>
    </tr>
    <tr>
        <td class="TBBG1">
        .</td>
    </tr>
    </table>

</div>


<%End If%>





 
 
来顶一下
返回首页
返回首页

发表评论 【查看全部条评论】
用户名:
密码:
验证码:
匿名:
推荐资讯
找了个帝国CMS程序和百度云服务器BCC
找了个帝国CMS程序和
帝国CMS管理员登陆页面修改美化
帝国CMS管理员登陆页
留言本从access数据库直接转入帝国MYSQL
留言本从access数据
MacBookPro安装win10双系统
MacBookPro安装win1
相关文章
    无相关信息
栏目更新
栏目热门