| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 
 |  
import string
import copy
 
class Image:
    """ Représente une image."""
 
    def __init__(self, w, h):
        self.width  = w
        self.height = h
        size = self.width * self.height
        for i in range(0, size - 1):
            self.data.append(255)
 
    def __init__(self, fileName):
        self.readPGM(fileName)
 
    def getId(self, i, j):
        return (self.width*i + j)
 
    def setPixel(self, i, j, val):
        self.data[self.getId(i,j)] = val
 
    def getPixel(self, i, j):
        return self.data[self.getId(i,j)]
 
    def writeToPGM(self, fileName):
        f = open(fileName,'w')
        f.write("P2\n")
        f.write("# Created with Python !\n")
        f.write(str(self.width) + " " + str(self.height) + "\n")
        f.write("256\n")
        size = self.width * self.height
        for i in range(0, size - 1):
            f.write(str(self.data[i]) + "\n")
        f.close()
 
    def readPGM(self, fileName):
        f = open(fileName, 'r')
        f.readline() # Le magic number
        f.readline() # Les commentaires        
        line = f.readline() # Les dimensions de l'image
        l = string.split(line)
        self.width  = int(l[0])
        self.height = int(l[1])
        line = f.readline()
        # Les données
        size = self.width * self.height
        self.data = []
        for i in range(0, size - 1):
            line = f.readline()
            self.data.append(int(line))
        f.close()
 
    def lissage(self):
        res = copy.deepcopy(self)
        for j in range(1, self.height-2):
            for i in range(1, self.width-2):
                val = self.getPixel(i,j)     + self.getPixel(i+1,j)   + self.getPixel(i-1,j)   +\
                      self.getPixel(i,j+1)   + self.getPixel(i,j-1)   + self.getPixel(i+1,j+1) +\
                      self.getPixel(i+1,j-1) + self.getPixel(i-1,j+1) + self.getPixel(i-1,j-1)
                res.setPixel(i,j,val/9)
        print "Self : ", self.getPixel(109,100), ", Res  : ", res.getPixel(109,100)
        self = copy.deepcopy(res)
        print "Self : ", self.getPixel(109,100), ", Res2 : ", res.getPixel(109,100)
        self.writeToPGM("moyenne1.pgm") |