Académique Documents
Professionnel Documents
Culture Documents
import numpy as np
#une liste de tuples où chaque tuple représente un caractère ASCII et le nombre de pixels associés à
ce caractère dans une image. Les tuples sont triés en fonction du nombre de pixels
pixelsPerChar = [(32,0),(33,37),(34,51),(35,98),(36,87),(37,88),(38,71),(39,25),(40,42),
(41,48),(42,44),(43,46),(44,26),(45,24),(46,15),(47,44),(48,80),(49,49),(50,72),(51,69),
(52,71),(53,74),(54,84),(55,50),(56,93),(57,83),(58,30),(59,44),(60,50),(61,39),(62,52),
(63,56),(64,98),(65,83),(66,92),(67,71),(68,78),(69,87),(70,77),(71,83),(72,85),(73,52),
(74,62),(75,94),(76,55),(77,105),(78,100),(79,82),(80,73),(81,102),(82,88),(83,86),
(84,62),(85,82),(86,74),(87,109),(88,88),(89,67),(90,74),(91,47),(92,43),(93,47),(94,32),
(95,28),(96,15),(97,78),(98,88),(99,66),(100,91),(101,82),(102,62),(103,81),(104,72),
(105,42),(106,51),(107,77),(108,45),(109,87),(110,60),(111,67),(112,80),(113,85),
(114,50),(115,70),(116,58),(117,64),(118,61),(119,78),(120,75),(121,65),(122,61),
(123,49),(124,36),(125,48),(126,28)]
pixelsPerChar = [(32,0),(65,83),(73,52),(87,109)]
pixelsPerChar.sort(key=lambda y: y[1])
def charForLight(light): # prend en entrée un niveau de luminosité light et renvoie le caractère ASCII
c = " " # Initialise la variable c à un espace, qui est le caractère par défaut
c = chr(asciii)
return c # Retourne le caractère correspondant à la luminosité minimale différentielle
print(charForLight(255)) # " " #impriment le caractère correspondant à une luminosité de 255, 127
et 0 respectivement.
print(charForLight(127)) # "L"
print(charForLight(0) ) # "W"
#prend le nom de fichier d'une image, le nom de fichier de texte de sortie, la taille des blocs,
w = len(image[0])
blocW, blocH = blocSize #Déstructure la taille du bloc. Cette variable est supposée être un
tuple avec deux éléments, et cette ligne de code assigne ces deux éléments à deux variables
distinctes blocW et blocH. Plus précisément, si blocSize est un tuple de la forme (largeur, hauteur)
alors après l'exécution de cette ligne, blocW prendra la valeur de la première composante du tuple
(largeur) et blocH prendra la valeur de la deuxième composante du tuple (hauteur).exp;blocW,
blocH = (3, 5)
nbBlocsH = h//blocH
for blocY in range(nbBlocsH): #Les boucles imbriquées parcourant les blocs dans l'image.
sumRGB = 0
for y in range(blocH): #C'est une boucle qui parcourt les lignes du bloc.
sumRGB += (image[realY][realX][0]+ \
image[realY][realX][1]+ \
image[realY][realX][2])/3
if type=="html": #Si le type de sortie est "html", génère une balise span avec une couleur
color = "rgb("+str(avgRGB)+","+str(avgRGB)+","+str(avgRGB)+")"
if type=="html": #Si le type est "html", ajoute un espace insécable si le caractère est un espace.
else:
s += c
s += "</span>"
if type=="html": #Si le type est "html", ajoute une balise de saut de ligne.
s += '\n'
f.close()
#Trois appels à awesomeASCIIArt avec différentes images, tailles de blocs et types de sortie.