diff --git a/code/bmp.py b/code/bmp.py index 448ff3b..fb46348 100644 --- a/code/bmp.py +++ b/code/bmp.py @@ -19,6 +19,7 @@ headerSize = 54 header = BMPHeader( fileData[:headerSize] ) content = BMPContent( fileData[header.offset:], header ) -print header.bpp print -print content.map \ No newline at end of file +for line in content.map: + for pixel in line: + print "rgb(%s, %s, %s)" % (pixel.r, pixel.g, pixel.b) \ No newline at end of file diff --git a/code/classes.py b/code/classes.py index d6b5adf..f3b0338 100644 --- a/code/classes.py +++ b/code/classes.py @@ -32,7 +32,6 @@ class BMPHeader: self.header = binHeader - #################################################### # classe qui parse le content (binaire) en matrice # #################################################### @@ -46,8 +45,45 @@ class BMPContent: print "ne prends pas en charge les versions autre que bmp24"; exit + # si le fichier a une mauvaise taille donc mauvais format + if len(binContent) != (2 + header.width * header.bpp/8 ) * header.height: + print "Mauvais format" + exit + - self.map = "" - for byte in binContent: - self.map += str(ord(byte)) + " " - \ No newline at end of file + + self.map = [] + i = 0 + + for line in range(0, header.height): + self.map.append( [] ) # on créé la colonne + + for pix in range(0, header.width): + self.map[line].append( # on ajoute le pixel à la ligne + RGBPixel( + ord( binContent[i+2] ), # rouge + ord( binContent[i+1] ), # vert + ord( binContent[i+0] ) # bleu + ) + ); + + i += 3 # on passe à la suite + + i += 2 # on saute le padding de saut de ligne + + self.map = self.map[::-1] # on inverse les lignes + + +################################# +# classe contenant un pixel RGB # +################################# +class RGBPixel: + def __init__(self, r, g, b): + self.r = r + self.g = g + self.b = b + + def set(self, r, g, b): + self.r = r + self.g = g + self.b = b \ No newline at end of file diff --git a/code/classes.pyc b/code/classes.pyc index 121bf9f..9f30776 100644 Binary files a/code/classes.pyc and b/code/classes.pyc differ diff --git a/code/contentDat.algo b/code/contentDat.algo index 58dc8ba..8a9e413 100644 --- a/code/contentDat.algo +++ b/code/contentDat.algo @@ -2,4 +2,3 @@ c = contenu binaire w = pixels d'une ligne h = pixels d'une colonne b = octets par pixels -