jag använder följande funktion för att få en bild bredd. Är inte säker på detta men, vad är strFileVar för typ?, kan det vara att hela filen inte får plats? är inte alla variabler varianter till de tilldelas med ngt. i deta fall är det en sträng...allt fungerar som sagt med gif-bilder och lite mindre jpg-bilder. Det beror på att du gör fel!strul med att få rätt bildbredd
Då jag skickar in sökvägen till en jpg bild som är större än 35 KB får jag tillbaka fel värden.
Detta händer bara på jpg-bilder som är större än 35KB?????
Function GetImageWidth(sFile)
boolStopLooping = False
If ReadBytes(sFile, 0, 3) = "GIF" Then
lngWidth = Asc(ReadBytes(sFile, 7, 1)) + Clng(Asc(ReadBytes(sFile, 8, 1)))*256
Else
If Not Instr(ReadBytes(sFile, 0, 3), Chr(255) & Chr(216) & Chr(255)) = 0 Then
lngFilePos = instr(ReadBytes(sFile, 0, 3), Chr(255) & Chr(216) & Chr(255)) + 2
strFileVar = ReadBytes(sFile, 0, -1)
Do While lngFilePos < len(strFileVar) And boolStopLooping = False
Do While Asc(Mid(strFileVar, lngFilePos, 1)) = 255 And lngFilePos < Len(strFileVar)
lngFilePos = lngFilePos + 1
Loop
If Asc(Mid(strFileVar, lngFilePos, 1)) < 192 Or Asc(Mid(strFileVar, lngFilePos, 1)) > 195 Then
lngFilePos = lngFilePos + Clng(Asc(Right(Mid(strFileVar, lngFilePos + 1, 2), 1)) + ((Asc(Left(Mid(strFileVar, lngFilePos + 1, 2), 1)) * 256))) + 1
Else
boolStopLooping = True
End If
Loop
lngWidth = Clng(Asc(Mid(strFileVar, lngFilePos + 7, 2))) + (Clng(Asc(Mid(strFileVar, lngFilePos + 9, 2))) * 256)
End If
End If
If ReadBytes(sFile, 0, 3) <> "GIF" Then
lngWidth = lngWidth - 256
End If
GetImageWidth = lngWidth
End FunctionSv: strul med att få rätt bildbredd
Sv: strul med att få rätt bildbredd
Sv: strul med att få rätt bildbredd *updaterad*
Kolla koden i Programarkivet:*Uppdaterat* ImageSizes, en liten activex-dll som luskar ut dimensionerna på en bild. så får du se hur man bör göra...