Partage
  • Partager sur Facebook
  • Partager sur Twitter

Créer une fonction comme crop

14 janvier 2015 à 21:39:16

Bonsoir, 

J'ai besoin d'aide pour définir une fonction qui permet de réaliser la même chose que crop et je n'ai aucune idée de comment faire. En espérant que vous allez m'aider.

Merci

  • Partager sur Facebook
  • Partager sur Twitter
15 janvier 2015 à 6:48:38

Salut

Regarde du côté du module PIL (Pillow en 3.0).

  • Partager sur Facebook
  • Partager sur Twitter
15 janvier 2015 à 12:55:18

Oui j'ai deja regardé mais le problème c'est que je suis un débutant en python et j'arrive pas à parametrer la fonction
  • Partager sur Facebook
  • Partager sur Twitter
22 janvier 2015 à 18:01:10

Edit : Erreur

-
Edité par Louzio63 22 janvier 2015 à 18:03:29

  • Partager sur Facebook
  • Partager sur Twitter
22 janvier 2015 à 18:02:33

Je remonte mon problème car il n'a pas été résolu... Voilà mon code et l'utilisation de crop telle que je la veux :

 from PIL import Image #importer les fonctions images#

from random import *  #importer toutes les fonctions aléatoires#



permut = [] #création d'un vecteur#



img = Image.open("chiens-poker.jpg") #chargement de l'image#



larg, haut = img.size #permet d'avoir les dimensions de l'image#

siz = (larg, haut)



mc = input ("Découpage en largeur") #demande à l'utilisateur le nombre de carré souhaité en largeur#

nc = input ("Découpage en hauteur") #demande à l'utisateur le nombre de carré souhaité en hateur#

m = int(mc) #on choisit de prendre des entiers pour m#

n = int(nc) #ainsi que pour n#

p = m*n #résultat du nombre de carrés attendu en fonction de m et de n#

print (p) #affichage de p pour une visualisation du nombre de carrés demandés pour les découpages de l'image#



permut = [i for i in range(p)] #initialisation du vecteur#

shuffle (permut) #permutation des nombres de 0 à p#



#NB : la fonction shuffle ici présentée est le fruit de nombreuses heures de recherches pour un alégement du code et une meilleure lisibilité#

#De ce fait, la fonction shuffle remplace un code complexe permettant de permuter le numéro de la case avec une autre#



for i in range(p):

    print (i, permut [i]) #affichage des permutations#



kmg = Image.new("RGB", siz) #création d'une image vide dans le programme, acceptation des couleurs pour l'image#

la = int(larg/m) #nombre de pixel en largeur et

ha = int(haut/n) #hauteur de case#



#La suite du code permet de faire la permutation des morceaux desimages dans les cases suite au découpage et à la nouvelle position des morceaux des images voulu par shuffle#





for i in range(p): #balaye toutes les cases de la nouvelle image#

    x1 = i%m #coordonné de i par projection en x#

    y1 = int(i/m) #coordonné de i par projection en y#

    x2 = permut[i]%m #coordonné de permut[i] par projection en x#

    y2 = int(permut[i]/m) #coordonné de permut[i] par projection en y#

    box =(x2*la, y2*ha, (x2+1)*la, (y2+1)*ha) #pour utiliser selection, il faut le nombre de pixel du point en haut à gauche et en bas à droite pour la délimitation du découpage image#

    def sel(self, box=None):

        self.load()

        if box is None:

            return self.copy()

            return _ImageCrop(self, box)

            jmg = img.sel(box) #utilisation d'une image intermédiaire qui prend le bout d'image d'origine calculé avec box#

            box1 = (x1*la, y1*ha) #calcul des coordonnées pour la redirection du bout d'image d'origine, contenu dans jmg, dans la nouvelle image kmg (nb de pixel comme pour crop)#

            kmg.paste(jmg, box1) #vide jmg dans kmg#



kmg.save('Résultat.png') #sauvegarde de l'image sur le disque#

kmg.show() #apparition de la nouvelle image#

PS : En effaçant la fonction définie et en remplaçant sel par crop on obtient le résultat voulu avec l'image suivante.


Edit : Y a vraiment personne pour m'aider ?

-
Edité par Louzio63 22 janvier 2015 à 20:47:54

  • Partager sur Facebook
  • Partager sur Twitter
23 janvier 2015 à 21:04:30 - Message modéré pour le motif suivant : non merci


Anonyme
23 janvier 2015 à 21:34:26

louisfloree a écrit:

Moi qui croyais que c'était un endroit pour apprendre... Y'a que des merdes en python ici !


nous sommes ni a tes ordres, ni des merdes. comme tu le dis, c'est un endroit pour apprendre donc il y a des débutants tout comme toit, ca ne sert à rien de s'emporter ainsi !
  • Partager sur Facebook
  • Partager sur Twitter
23 janvier 2015 à 21:38:49

certes, mais mon problème remonte d'il y a 2 semaines à peu près et il n'est pas résolu... Et je m'emporte parce d´autres sujets plus récent ont déjà été résolus avant le mien !
  • Partager sur Facebook
  • Partager sur Twitter
23 janvier 2015 à 22:49:55

Et bien tu vas pouvoir attendre encore longtemps, car après ton commentaire je doute que les membres veuillent te répondre.

Il faut parfois se montrer patient en fonction des problèmes. Car il y a des problèmes faciles qui peuvent se résoudre dès le premier message.

À l'avenir merci de te montrer poli.

Cordialement.

  • Partager sur Facebook
  • Partager sur Twitter
23 janvier 2015 à 23:01:25

Il n'y aura pas d'avenir... Votre forum ne traite pas les questions dans l'ordre et le premier commentaire est vague... Vous dites qu'il faut être patient mais imaginez que c'est pour mon boulot, et que c'est important ?

Tant pis j'irai ailleurs.

  • Partager sur Facebook
  • Partager sur Twitter
24 janvier 2015 à 0:07:05

Et bien soit. Si cela est votre désir.

Parce qu'il y a un ordre à respecter pour répondre à des questions ? Foutaises.

Bref. Bonne continuation, si OCR ne correspond pas à votre demande, cela est votre soucis, cependant d'autres membres disent le contraire.

  • Partager sur Facebook
  • Partager sur Twitter