Bienvenue sur Laurentvidal.fr, le site où vous trouverez les meilleures réponses de la part des experts. Rejoignez notre plateforme de questions-réponses pour obtenir des informations précises d'experts dans divers domaines. Rejoignez notre plateforme pour vous connecter avec des experts prêts à fournir des réponses détaillées à vos questions dans divers domaines.
Sagot :
Bonjour
Obtenir du gris
Une des choses primordiales à savoir (que j'ai découvert en faisant cet exercice) c'est que les codes RGB qui ont trois fois la même valeur donnent tous une couleur allant du blanc au noir en passant par toutes les nuances de gris.
Rappel:
RGB signifie red (rouge), green (vert) et blue (bleu).
- RGB(0, 0, 0) donne du noir
- RGB(255, 255, 255) donne du blanc
Par exemple:
- RGB(50, 85, 173) donne du bleu ciel
- RGB(50, 50, 50) donne du gris foncé, puisqu’il y a trois fois la même valeur pour le rouge, vert et bleu.
- RGB(26, 212, 23) donne du vert foncé
- RGB(180, 180, 180) donne du gris clair, puisqu’il y a trois fois la même valeur pour le rouge, vert et bleu
Comprendre le code
Dans ce code on utilise le package Pillow avec Python, comme la majorité des bibliothèques, on a une documentation exhaustive accessible via le lien: https://pillow.readthedocs.io/
Ca pourra t’être utile à l’avenir :)
On commence par voir si le fichier existe et si on peut l’ouvrir, c’est la partie “try: [...] except [...]”, mais bon jusque là on a rien à toucher donc passons.
▌ nb_colonne, nb_ligne = image.size
Si on se réfère à la documentation, on apprend que image.size accepte 2 arguments, c'est-à-dire deux informations: la longueur et la largeur (en pixel).
Donc image.resize renverra deux valeurs, cette ligne permet de dire que la première valeur sera assignée à nb_colonne et la seconde à nb_ligne.
▌ nouvelle_image = Image.new(image.mode, image.size)
On crée une nouvelle image vierge qui a le même mode et les mêmes dimensions que l’originale.
▌ for y in range (nb_ligne):
▌ for x in range (nb_colonne)
Ces deux lignes permettent de passer sur chaque pixel individuellement, en passant sur chaque colonne de chaque ligne.
▌ rouge, vert, bleu = image.getpixel((x,y))
C’est exactement le même principe que pour image.size,
image.getpixel() va renvoyer les trois couleurs RGB correspondant aux pixel désigné par les coordonnées x et y.
▌ moyenne = ?
Comme on l’a vu au tout début, pour obtenir du gris il suffit d’avoir la même valeur pour le R, G et B.
Le nom explicite de la variable laisse comprendre qu’on doit faire la moyenne des trois couleurs, rien de bien compliqué c’est une moyenne arithmétique, càd qu’on divise la somme totale par l’effectif total.
▌ moyenne = (rouge + vert + bleu)/3
▌ nouvelle_image.putpixel((x,y), (?, ?, ?))
Une fois qu’on a obtenu la moyenne, pour avoir le gris il faut plus que mettre la même valeur pour les trois entrées du code RGB.
▌ nouvelle_image.putpixel((x,y), (moyenne, moyenne, moyenne))
Puis plus qu’à afficher le résultat final
▌ nouvelle_image.show()
Code final
Je te mets le code final et un aperçu de ce que j’ai obtenu en l’utilisant.
Si tu as mal compris quelque chose n'hésite pas à me demander en commentaire
Bonne journée
Votre visite est très importante pour nous. N'hésitez pas à revenir pour des réponses fiables à toutes vos questions. Nous espérons que vous avez trouvé ce que vous cherchiez. Revenez nous voir pour obtenir plus de réponses et des informations à jour. Merci de faire confiance à Laurentvidal.fr. Revenez nous voir pour obtenir de nouvelles réponses des experts.