Partage
  • Partager sur Facebook
  • Partager sur Twitter

Modifier la taille d'une image avec python

    11 septembre 2020 à 21:51:33

    Bonjour à tous, je m'appelle Guillaume, en terminal avec option NSI.

    J'ai un projet à rendre pour dans 2 semaines, et la je bloque.

    Le but est de créé un genre de Photoshop très rudimentaire avec une dizaines de fonctions de traitement d'image. 

    La fonction qui me pose problème est la suivant : Coder une fonction permettant de modifier la taille d'une image. 

    Par exemple, j'ai une image de 100 * 50 pixels, et je souhaite l'agrandir avec un facteur de 10. Je dois me retrouver avec une image de 1000 * 500.

    Le problème est que l'on a juste le droit à la bibliothèque PIL. (interdit d'utiliser resize).

    Une de mes idées est de prendre un pixel de coordonnées (x, y) et le pixel à coté, (x + 1, y)

    On trouve la différences entre chaque valeurs RGB. Exemple : pixel 1 = (200, 50, 100)  pixel 2 = (40, 100, 5)

    On a donc une diffèrence de 160 pour le rouge, 50 vert, 95 bleu. 

    Comme j'ai un facteur de 10, il y a 8 pixels entres les deux. Donc 160 / 8 = 20, .....

    Donc sur ma nouvelle image, j'ai p((x, y), (200 - 20, ..., ...); p((x + 1, y), (200 - 20 - 20, ..., ...) .....

    J'obtient donc un dégradé de couleurs sur ma nouvelle images.

    Je ne sais pas si c'est très claire, mais si vous pouvez me donner un coup de main soit pour mettre au point cette idée. Ou si vous avez des idées plus simples ou plus courtes, je suis preneur. 

    Merci beaucoup d'avoir pris le temps de lire mon post, et d'y répondre. 

    Bonne fin de journée, encore merci

    • Partager sur Facebook
    • Partager sur Twitter
      11 septembre 2020 à 22:13:29

      Pour moi dix fois plus grande ça veut dire multiplier les côtés par racine de 10.
      • Partager sur Facebook
      • Partager sur Twitter

      Python c'est bon, mangez-en. 

        12 septembre 2020 à 14:26:52

        GuillaumeTheunissen a écrit: > Je ne sais pas si c'est très claire, mais si vous pouvez me donner un coup de main soit pour mettre au point cette idée. Ou si vous avez des idées plus simples ou plus courtes, je suis preneur.

        Est-ce que tu as déjà une ébauche de code sur laquelle on pourrait commencer à t'aider ?

        • Partager sur Facebook
        • Partager sur Twitter
          14 septembre 2020 à 18:58:44

          Re, merci a vous de m'aboir répondu.

          Voici une 1ere ébauche de mon idée. C'est assez brouillon, et pas tellement opti. Mais je suis que en phase de test et de compréhension. 

          Le code repent la logique indiqué dans mon précédent message. Merci à vous

          Petit problème sur le rendu, je vous laisse voir. 

          Ps : si quelqu'un sait pourquoi quand je tape sur alt, ça écrit d, je suis preneur. Merci

          def Redim(photo, facteur):
              taille = photo.size
              image_fini = Image.new('RGB', (taille[0] * facteur + 1000, taille[1] * facteur + 1000), "white")
          
              for i in range(taille[0] - 1):
                  for j in range(taille[1]):
                      p_gauche = photo.getpixel((i, j))
                      p_droite = photo.getpixel((i + 1, j))
          
                      diff_rouge = p_gauche[0] - p_droite[0]
                      diff_vert = p_gauche[1] - p_droite[1]
                      diff_bleu = p_gauche[2] - p_droite[2]
          
                      nb_p = facteur - 2
                      if nb_p == 0:
                          nb_p = 1
          
                      rouge = int(diff_rouge / nb_p)
                      vert = int(diff_vert / nb_p)
                      bleu = int(diff_bleu / nb_p)
          
                      image_fini.putpixel((i, j), (p_gauche[0], p_gauche[1], p_gauche[2]))
          
                      for k in range(1, nb_p + 1):
                          image_fini.putpixel((i + k, j), (p_gauche[0] - rouge, p_gauche[1] - vert, p_gauche[2] - bleu))
          
                      image_fini.putpixel((i * facteur, j * facteur), (p_droite[0], p_droite[1], p_droite[2]))
          
              return image_fini     

          -
          Edité par GuillaumeTheunissen 14 septembre 2020 à 22:02:51

          • Partager sur Facebook
          • Partager sur Twitter

          Modifier la taille d'une image avec python

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown