// GIF 文件格式判断
If String(BlobMid(lb_Data,1,4),EncodingANSI!) = 'GIF8' Then
ll_PictureWidth= ly_byte[7]+ly_byte[8]*256
ll_PictureHeight= ly_byte[9]+ly_byte[10]*256
End If
// JPEG文件格式
// 前 3 个字节为标识: 0xFF,0xD8,0xFF
If ly_byte[1] = 255 and ly_byte[2] = 216 and ly_byte[3] = 255 Then
ll_DataLen = Len(lb_Data)
ll_DataPos = 3
ll_FilePos = 3
Do While lb_LoopFlag
ll_DataPos = ll_DataPos + 1
ll_FilePos = ll_FilePos + 1
If ly_byte[ll_DataPos] = 255 And ly_byte[ll_DataPos + 1] <> 255 Then
If ly_byte[ll_DataPos + 1] >= 192 And ly_byte[ll_DataPos + 1] <= 195 Then
//找到尺寸数据
ll_PictureWidth = ly_byte[ll_DataPos + 7] * 256 + ly_byte[ll_DataPos + 8]
ll_PictureHeight = ly_byte[ll_DataPos + 5] * 256 + ly_byte[ll_DataPos + 6]
lb_LoopFlag = False
Else
//没有找到尺寸数据,重新读取文件
ll_FilePos = ll_FilePos + ly_byte[ll_DataPos + 3] * 256 + ly_byte[ll_DataPos + 2] + 1
If ll_FilePos > ll_FileLength Then
FileClose(li_File)
Return 0
Else
FileSeek(li_File,ll_FilePos)
FileRead(li_File,lb_Data)
ll_DataLen = Len(lb_Data)
ll_DataPos = 0
End If
End If
End If
If ll_DataPos = ll_DataLen - 9 And lb_LoopFlag = True Then
ll_FilePos = ll_FilePos - 9
FileSeek(li_File,ll_FilePos)
FileRead(li_File,lb_Data)
ll_DataLen = Len(lb_Data)
ll_DataPos = 0
End If
If ll_FilePos >= ll_FileLength Then
lb_LoopFlag = False
End If
Loop
End If
// BMP文件格式
// 前两个字节是标识:标识可能有很多种
// 第 19,20,21,22 字节为宽度(width), 第 23,24,25,26 字节为高度(height)
// 四个字节组成dword, 低位在前
If String(BlobMid(lb_Data,1,2),EncodingANSI!) = 'BM' Then
ll_PictureWidth= ly_byte[19]+ly_byte[20]*256+ly_byte[21]*65536+ly_byte[22]*16777216
ll_PictureHeight= ly_byte[23]+ly_byte[24]*256+ly_byte[25]*65536+ly_byte[26]*16777216
End If
If ly_byte[2] = asc('P') and ly_byte[3] = asc('N') and ly_byte[4] = asc('G')Then
ll_PictureWidth= ly_byte[20]+ly_byte[19]*256+ly_byte[18]*65536+ly_byte[17]*16777216
ll_PictureHeight= ly_byte[24]+ly_byte[23]*256+ly_byte[22]*65536+ly_byte[21]*16777216
End If
If ll_PictureWidth > 0 And ll_PictureHeight > 0 Then
al_PictureWidth = ll_PictureWidth
al_PictureHeight = ll_PictureHeight
//将图像的真实大小转换为PBUnit大小,并返回
al_PictureWidth = PixelsToUnits(ll_PictureWidth,XPixelsToUnits!)
al_PictureHeight = PixelsToUnits(ll_PictureHeight,YPixelsToUnits!)
FileClose(li_File)
Return 1
Else
FileClose(li_File)
Return 0
End If