日期:2013-07-02  浏览次数:20756 次

Function OpenJPGFile(FileName)

Dim Ascii, lastHex, currentHex, 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 = FSO.OpenTextFile(FileName, ForReading, False, TristateFalse)
i = 0
While Not File.AtEndOfStream and SOSFound = false

Ascii = Asc(File.Read(1))
lastHex = currentHex
currentHex = Right("0" & Hex(Ascii), 2)
if lastHex & currentHex = "FFDA" or i > 100000 then
SOSFound = true
end if
ExifTemp(i) = currentHex
i = i + 1
ReDim Preserve ExifTemp(i)
Wend
File.Close

Set File = Nothing
Else
Response.Write("File does not exist")
End If
Set FSO = Nothing

End If
end function

Sub GetDirectoryEntries(Offset)

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 = _
HexToDec(ExifTemp(Offset + 1)) * 256 + _
HexToDec(ExifTemp(Offset + 0))
Else
No_of_Entries = _
HexToDec(ExifTemp(Offset + 0)) * 256 + _
HexToDec(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)
'With IFDDirectory(Upper_IFDDirectory + i)

If IsIntel Then
IFDDirectory(k)(IFD_IDX_Tag_No) = _
ExifTemp((Offset + 2) + ((i - 1) * 12) + 1) & _
ExifTemp((Offset + 2) + ((i - 1) * 12) + 0)
'HexToDec(ExifTemp((Offset + 2) + ((i - 1) * 12) + 1)) * 256 + _
'HexToDec(ExifTemp((Offset + 2) + ((i - 1) * 12) + 0))

IFDDirectory(k)(IFD_IDX_Data_Format) = _
HexToDec(ExifTemp((Offset + 2) + ((i - 1) * 12) + 3)) * 256 + _
HexToDec(ExifTemp((Offset + 2) + ((i - 1) * 12) + 2))

IFDDirectory(k)(IFD_IDX_Components) = _
HexToDec(ExifTemp((Offset + 2) + ((i - 1) * 12) + 7)) * 256 * 256 * 256 + _
HexToDec(ExifTemp((Offset + 2) + ((i - 1) * 12) + 6)) * 256 * 256 + _
HexToDec(ExifTemp((Offset + 2) + ((i - 1) * 12) + 5)) * 256 + _
HexToDec(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_Value) = _
ExifTemp((Offset + 2) + ((i - 1) * 12) + 11) & _
ExifTemp((Offset + 2) + ((i - 1) * 12) + 10) & _
ExifTem