BMPFile terminé (avec parse)
This commit is contained in:
parent
82d6da8692
commit
37958cc77d
|
@ -14,7 +14,7 @@ print img.header.info()
|
||||||
|
|
||||||
print img.readableData
|
print img.readableData
|
||||||
|
|
||||||
for line in img.map:
|
for line in img.content.map:
|
||||||
for pixel in line:
|
for pixel in line:
|
||||||
print "rgb(%s, %s, %s)" % (pixel.r, pixel.g, pixel.b)
|
print "rgb(%s, %s, %s)" % (pixel.r, pixel.g, pixel.b)
|
||||||
print
|
print
|
|
@ -7,6 +7,24 @@ import sys
|
||||||
#################################################
|
#################################################
|
||||||
class BMPHeader:
|
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 <bytes> en entier
|
# convertit les octets <bytes> en entier
|
||||||
def toInt(self, bytes):
|
def toInt(self, bytes):
|
||||||
intReturn = 0;
|
intReturn = 0;
|
||||||
|
@ -14,8 +32,8 @@ class BMPHeader:
|
||||||
intReturn += ord(byte) * (256 ** i)
|
intReturn += ord(byte) * (256 ** i)
|
||||||
return intReturn
|
return intReturn
|
||||||
|
|
||||||
# CONSTRUCTEUR: parse le header au format bin en objet
|
# parse le header au format bin en objet
|
||||||
def __init__(self, binHeader):
|
def parse(self, binHeader):
|
||||||
self.header = binHeader # header brut (format initial: bin)
|
self.header = binHeader # header brut (format initial: bin)
|
||||||
self.signature = self.toInt(binHeader[ 0: 2]) # signature (4D42)
|
self.signature = self.toInt(binHeader[ 0: 2]) # signature (4D42)
|
||||||
self.fileSize = self.toInt(binHeader[ 2: 6]) # taille du fichier bmp (bytes)
|
self.fileSize = self.toInt(binHeader[ 2: 6]) # taille du fichier bmp (bytes)
|
||||||
|
@ -136,9 +154,9 @@ class BMPFile:
|
||||||
with open(sys.argv[1]) as file:
|
with open(sys.argv[1]) as file:
|
||||||
for byte in file.read():
|
for byte in file.read():
|
||||||
self.fileData += byte;
|
self.fileData += byte;
|
||||||
self.readableData += str(ord(byte)) + " "
|
self.readableData += str(hex(ord(byte))) + " "
|
||||||
|
|
||||||
headerSize = 54
|
headerSize = 54
|
||||||
self.header = BMPHeader ( self.fileData[:headerSize] )
|
self.header = BMPHeader()
|
||||||
|
self.header.parse( self.fileData[:headerSize] )
|
||||||
self.content = BMPContent( self.fileData[self.header.offset:], self.header )
|
self.content = BMPContent( self.fileData[self.header.offset:], self.header )
|
||||||
self.map = self.content.map # lien
|
|
BIN
code/classes.pyc
BIN
code/classes.pyc
Binary file not shown.
Loading…
Reference in New Issue