ASCII Art

1. Images et Matrices

1.1. Importation de Module

from PIL import Image
import numpy as np
import matplotlib.pyplot as plt

1.2. Image vers Matrice

def image2matrice(img_chemin) :
    image = Image.open(img_chemin)
    image_gris = image.convert("L")
    image.close()
    return np.asarray(image).tolist()

2. Manipulation d’Images

2.1. Symétrie Verticale

Création de la matrice par ajouts successifs, comme étant la matrice des lignes renversées de la matrice originale.

def symetrie_verticale(matrice) :
    sym_matrice = []
    for ligne in matrice :
        rligne = []
        for i in range(len(ligne)-1,-1,-1):
            rligne.append(ligne[i])
        sym_matrice.append(rligne)
    return sym_matrice
 
# ou

def symetrie_verticale(matrice) :
    return [ [ ligne[i] for i in range(len(ligne)-1,-1,-1) ]
             for ligne in matrice ]

On peut aussi (ce qui est d’une certaine manière équivalent), remplir par un parcours de matrices une matrice vide à la ligne i colonne j avec la ligne i et colonne w-1-j de la matrice originale ayant w colonnes.

def symetrie_verticale(matrice) :
    h, w = len(matrice), len(matrice[0])
    sym_matrice = [ [0] * w for i in range(h) ]
    for i in range(h) :
        for j in range(w):
            sym_matrice[i][j] = matrice[i][w-1-j]
    return sym_matrice

Dans la console Spyder

image_matrix = image2matrice("img/velociraptor.jpg")
image_matrix_sym = symetrie_verticale(image_matrix)
Image.fromarray(np.array(image_matrix_sym,dtype="uint8"))