CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Python module PIL

BriquetChaud
BriquetChaud
Niveau 1
02 décembre 2017 à 21:36:43

Bonsoir à tous,

Est-ce que quelqu'un pourrait me dire comment mettre la moitié d'une image coupée par une diagonale en niveau de gris avec le module PIL ? J'ai essayé de faire avec une fonction mais je bloque.

andeunv
andeunv
Niveau 45
03 décembre 2017 à 09:36:07

Je ne comprends pas ce que tu veux faire, poste ton code.

Pour dessiner sur une diagonale de l'image, tu peux faire :

try:
    from PIL import Image, ImageDraw
except ImportError as err:
    print(err)

def draw(im):
    draw = ImageDraw.Draw(im)
    width, height = im.size
    draw.polygon([(0,0), (width, 0), (0, height)] , fill=(192,192,192))


if __name__=='__main__':
    im = Image.open('cat.jpg')
    draw(im)
    im.save('cat2.jpg')

https://image.noelshack.com/fichiers/2017/48/7/1512290154-cat.jpg -> https://image.noelshack.com/fichiers/2017/48/7/1512290162-cat2.jpg

BriquetChaud
BriquetChaud
Niveau 1
03 décembre 2017 à 12:06:42

Merci pour la réponse,

En faite je voudrais trouver une fonction affine(la diagonale) qui poserais une variable qui dit que:
Si le pixel est au-dessus de la diagonale on le met en niveau de gris
Et s'il ne l'est pas alors on le laisse en couleur.

Désolé si tu ne comprends pas très bien, je débute en codage Python

andeunv
andeunv
Niveau 45
03 décembre 2017 à 13:27:37

Je t'ai répondu en mp. :ok:

Bunyan
Bunyan
Niveau 17
03 décembre 2017 à 17:26:26

@andeunv : Dommage...
Les autres personnes intéressés n'auront pas la réponse et ce sujet ne sera pas résolu :/

andeunv
andeunv
Niveau 45
03 décembre 2017 à 20:46:18

Le 03 décembre 2017 à 17:26:26 Bunyan a écrit :
@andeunv : Dommage...
Les autres personnes intéressés n'auront pas la réponse et ce sujet ne sera pas résolu :/

Il m'a questionné en mp, en fait.

try:
    from PIL import Image
except ImportError as err:
    print(err)

def upper_diag(im): # fonction qui prend une image en argument
    row,col = im.size # on recupere les dimensions de l'image
    for i in range(row): # on parcourt toutes les lignes 
        for k in range(col-i): # boucle pour prendre toutes les valeurs au dessus de la diagonale
            im.putpixel((i, k), (192,192,192)) # on pose un pixel gris

if __name__=='__main__':
    im = Image.open('screen.png')
    upper_diag(im)
    im.save('bla.png')

Le " problème " c'est qu'à part pour des matrices carrées, on ne peut pas récupérer une "bonne" diagonale d'un côté à l'autre du rectangle. On n'a qu'une main diagonal.

https://en.wikipedia.org/wiki/Main_diagonal

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment