Récupérer la taille (x et y) d'un fichier image *.png [Résolu]

Signaler
Messages postés
56
Date d'inscription
mercredi 5 mai 2004
Statut
Membre
Dernière intervention
22 septembre 2009
-
Messages postés
56
Date d'inscription
mercredi 5 mai 2004
Statut
Membre
Dernière intervention
22 septembre 2009
-
Bonjour tous le monde !

je voudrais savoir comment récupérer la taille (x et y) d'un fichier image *.png
y'a pas une API ?

Merci!

7 réponses

Messages postés
56
Date d'inscription
mercredi 5 mai 2004
Statut
Membre
Dernière intervention
22 septembre 2009

On a trouvé la soluce :
on a extrait la taille en exdécimal du fichier png :

Public Type Type_Position
X As Long
Y As Long
End Type


Public Function XYFile(Path As String) As Type_Position
Dim MyStr As String


Open Path For Binary As #1
MyStr = Input(16, #1)
MyStr = Input(13, #1)
XYFile.X = CLng(OtherFormatOfStr(StrReverse(Left(MyStr, 4))))
XYFile.Y = CLng(OtherFormatOfStr(StrReverse(Mid(MyStr, 5, 4))))
Close #1
End Function


Private Function StrToBit(B As Integer) As String
Dim MyStr As String
Dim i As Integer

MyStr = "00000000"

For i = 7 To 0 Step -1
If (B / (2 ^ i)) >= 1 Then
B = B - (2 ^ i)
Mid(MyStr, 8 - i, 1) = "1"
End If
Next i

StrToBit = MyStr
End Function


Private Function BitToStr(MyStr As String, Pos As Integer) As String
Dim Tabl(8) As Currency
Dim i As Integer
Dim A As String
Dim B As Currency

B = 0
Tabl(0) = 2 ^ (Pos * 8)

For i = 1 To 7
Tabl(i) = Tabl(i - 1) * 2
Next i


For i = 1 To 8
A = Mid(MyStr, i, 1) If A 1 Then B B + Tabl(8 - i)
Next i

BitToStr = B
End Function


Private Function OtherFormatOfStr(StrEnter As String) As String
Dim i As Integer
Dim B As Integer
Dim MyStr As String
Dim Sort As Currency


For i = Len(StrEnter) To 1 Step -1
MyStr = Mid(StrEnter, i, 1)
B = Asc(MyStr)
Sort = Sort + Val(BitToStr(StrToBit(B), i - 1))
Next i


OtherFormatOfStr = Sort
End Function

*-- Mkin--*
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 195 internautes nous ont dit merci ce mois-ci

Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
27
bon je corrige alors.
pour les 16777216 c'est peut-être pas nécessaire.

Dim Lx As Long
Dim Ly As Long
Dim B(7) As Byte

Open Path For Binary As #1
Get #1, 17, B
Lx = B(3) + B(2) * 256 + B(1) * 65536 + B(0) * 16777216
Ly = B(7) + B(6) * 256 + B(5) * 65536 + B(4) * 16777216
MsgBox Lx & "x" & Ly
Close #1

Daniel
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 195 internautes nous ont dit merci ce mois-ci

Messages postés
908
Date d'inscription
jeudi 26 juillet 2001
Statut
Modérateur
Dernière intervention
1 février 2015
2
tu peux utiliser l'api gdi+ dont l'utilisation te sera simplifiée par cecihttp://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=42861&lngWId=1

voilà il y a peut etre d'autre méthodes plus simple, mais il est interessant pour un programmeur de savoir ce qu'est gdi+ et de s'initier à s'en servir.
Messages postés
56
Date d'inscription
mercredi 5 mai 2004
Statut
Membre
Dernière intervention
22 septembre 2009

en fait je cherche un code simple, j'ai juste besoin de connaitre la taille d'un fichier *.png, pour découper un sprite
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
27
Dim Lx As Long
Dim Ly As Long
Dim B(3) As Byte

Open Path For Binary As #1
Get #1, 17, B
Lx = B(3) + B(2) * 16 + B(1) * 256 + B(0) * 65536
MsgBox Lx
Get #1, , B
Ly = B(3) + B(2) * 16 + B(1) * 256 + B(0) * 65536
MsgBox Ly
Close #1

Daniel
Messages postés
56
Date d'inscription
mercredi 5 mai 2004
Statut
Membre
Dernière intervention
22 septembre 2009

c plus plus court, mais il doit y avoir une erreur, ça ne marche pas sur les X, ton code

mais merci, si tu régle le problème, ça m'interresse.
Messages postés
56
Date d'inscription
mercredi 5 mai 2004
Statut
Membre
Dernière intervention
22 septembre 2009

Parfait !
Bravo et merci!