From 37958cc77dff03f0500c0aa1b4c0159391215684 Mon Sep 17 00:00:00 2001 From: xdrm-brackets Date: Sun, 6 Sep 2015 22:43:37 +0200 Subject: [PATCH] =?UTF-8?q?BMPFile=20termin=C3=A9=20(avec=20parse)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- code/bmp.py | 4 ++-- code/classes.py | 32 +++++++++++++++++++++++++------- code/classes.pyc | Bin 4577 -> 4979 bytes 3 files changed, 27 insertions(+), 9 deletions(-) diff --git a/code/bmp.py b/code/bmp.py index 1be6f9b..5cb79cb 100644 --- a/code/bmp.py +++ b/code/bmp.py @@ -14,7 +14,7 @@ print img.header.info() print img.readableData -for line in img.map: +for line in img.content.map: for pixel in line: print "rgb(%s, %s, %s)" % (pixel.r, pixel.g, pixel.b) - print \ No newline at end of file + print \ No newline at end of file diff --git a/code/classes.py b/code/classes.py index 4d42d1d..80fadf2 100644 --- a/code/classes.py +++ b/code/classes.py @@ -7,6 +7,24 @@ import sys ################################################# class BMPHeader: + # CONSTRUCTEUR: initialise les variables + def __init__(self): + self.header = 0; # header brut (format initial: bin) + self.signature = 0; # signature (4D42) + self.fileSize = 0; # taille du fichier bmp (bytes) + self.offset = 0; # début de l'image (bytes) + self.infoSize = 0; # taille du INFO_HEADER + self.width = 0; # longueur de l'image (pixel) + self.height = 0; # hauteur de l'image (pixel) + self.plans = 0; # nombre de plans (default: 1) + self.bpp = 0; # nombre de bits par pixel (1,4,8, 24) + self.compType = 0; # type de compression (0=none, 1=RLE-8, 2=RLE-4) + self.size = 0; # taille de l'image avec padding (bytes) + self.horiRes = 0; # résolution horizontale (pixels) + self.vertRes = 0; # résolution verticale (pixels) + self.colorNb = 0; # nombre de couleurs de l'image (ou 0) + self.colorINb = 0; # nombre d'images importantes (ou 0) + # convertit les octets en entier def toInt(self, bytes): intReturn = 0; @@ -14,8 +32,8 @@ class BMPHeader: intReturn += ord(byte) * (256 ** i) return intReturn - # CONSTRUCTEUR: parse le header au format bin en objet - def __init__(self, binHeader): + # parse le header au format bin en objet + def parse(self, binHeader): self.header = binHeader # header brut (format initial: bin) self.signature = self.toInt(binHeader[ 0: 2]) # signature (4D42) self.fileSize = self.toInt(binHeader[ 2: 6]) # taille du fichier bmp (bytes) @@ -48,7 +66,7 @@ class BMPHeader: print "type compression: %s" % ( hex(self.compType ) ) print "taille(+padding): %s" % ( hex(self.size ) ) print "horizontal resol: %s" % ( hex(self.horiRes ) ) - print "vertical resol: %s" % ( hex(self.vertRes ) ) + print "vertical resol: %s" % ( hex(self.vertRes ) ) print "nombre de couleur: %s" % ( hex(self.colorNb ) ) print "nb couleurs impor: %s" % ( hex(self.colorINb ) ) print "=====================" @@ -136,9 +154,9 @@ class BMPFile: with open(sys.argv[1]) as file: for byte in file.read(): self.fileData += byte; - self.readableData += str(ord(byte)) + " " + self.readableData += str(hex(ord(byte))) + " " headerSize = 54 - self.header = BMPHeader ( self.fileData[:headerSize] ) - self.content = BMPContent( self.fileData[self.header.offset:], self.header ) - self.map = self.content.map # lien \ No newline at end of file + self.header = BMPHeader() + self.header.parse( self.fileData[:headerSize] ) + self.content = BMPContent( self.fileData[self.header.offset:], self.header ) \ No newline at end of file diff --git a/code/classes.pyc b/code/classes.pyc index 40e2979d8deaa77efcaf7f18111bc589387c29c7..fcd12a6747ac054d3fd76c86befd40d66a4be770 100644 GIT binary patch delta 1001 zcmb7COKTHR6h3!enMWQI6YWFWrWo5nn+j4CTotRS7+T~;DF{+RGQotJN@u_>;xoDu z7xDZ6>jVEl*Dl1Ri&8{%E4Xwa6m;u7H(nPaf(+-IZ|=Qw&Ue0hJ|Etjvh=-_yY;ef zJ!LcfSH(LG9UcH&F@aYD0|4qw0EH%EK}7UOK!ZUSVD&d)YDH5-SHw`nRK!vwp@^-B zv!s}-h^I(Wk(457XaH0LQnuU@06|7TYzep))*9gk?&!}`BtE8AqHwK=_p*z)W7yLk zEsP5Q=KSO7?>;oSFHYeqi`dxqd-j!`;FOXN6Hslg6HoS1fAg~D>0r)X7o{&Ph zk2j4=E*-p4+la#Ai%*6={aG)oHGu!pJT$3!m8qKTB1mx=~_>@S9(u zH6S?=fu%e9wx^u3mM3vCNx0dHe<{bi-bpVfHUg>N$2VS%G5p|7vIF?TTQOw;tS0BZ zF>#8Mi#$tJ@)LqCi-@Qp%iu@E3v1~T9!;(IWFtRDFhfuh9h8fdt0y8N*9LbHNI(Bb zZBnZHSV>o0x;i4$Z7b z*!G~Eltc`&0fim|7N^w0U_T8LgOfc?{+PkrnMF%BQNVYZrHcoJ4o*IC5il4E={UI{ z=OLyksIPb8uoDMzHt6@5Y;CsI!cOgaD9xu2K7@7uvh?-|zV=5)j%yZ6vLW_&J7z_W f$2gxY?w=EEpg`6opZKh}jSKiTJ7Sh|b2;xP|B;_J delta 696 zcmZ{h&ubGw6vyApCX?=LHrdT4l~ijQn@Xw;3I8gL<_jskk2A`gtYnUoeUAPftErT!(SpD7 z4IJhc1J*Ss7$+Gs)LLuG*7}hA9#;v%rO(dW{3EWc*aQ5Mzofb6dA{=lr-QlTWq2xK za}N3vItm5==WjRhSui2{4!#enEf@L#9Rd9mOblqD>1jy3zq@p%p_7FQM`;*H8{yky zA38bf=Fkf-s5~V#6}%Z