Flip horizontalement une image en Python (JES)
J'ai besoin de faire une fonction qui copie une image, mais en miroir. J'ai créé le code de miroir de l'image, mais il ne fonctionne pas et je ne sais pas pourquoi, parce que j'ai tracé le code et il devrait être la mise en miroir de l'image. Voici le code:
def invert(picture):
width = getWidth(picture)
height = getHeight(picture)
for y in range(0, height):
for x in range(0, width):
sourcePixel = getPixel(picture, x, y)
targetPixel = getPixel(picture, width - x - 1, height - y - 1)
color = getColor(sourcePixel)
setColor(sourcePixel, getColor(targetPixel))
setColor(targetPixel, color)
show(picture)
return picture
def main():
file = pickAFile()
picture = makePicture(file)
newPicture = invert(picture)
show(newPicture)
Quelqu'un peut m'expliquer quel est le problème? Merci.
show(picture)
et return picture
doit être mis en retraitS'il vous plaît, mettez à jour votre bloc de code à
mirror
😉 ce que vous avez dans votre fichier local...quand je fais ça il me donne une erreur en essayant de passer un argument à une fonction.
je ne sais pas ce que tu veux dire...je suis takinh est jython pour les débutants, donc je n'ai pas été présenté à toute python Api si c'est ce que vous faites référence.
Non, mais de fixer votre indentation dans votre question du corps donc on ne peut pas se confondre avec une mauvaise indentation (cliquez sur
edit
lien en bas)
OriginalL'auteur user2387191 | 2013-06-16
Vous devez vous connecter pour publier un commentaire.
Essayez ceci :
ok j'ai compris la réponse, pour x dans la gamme devrait être la largeur / 2 et la targetPixel doit avoir la largeur - x - 1, y merci pour votre aide les gars!
Bien fait, Merci !
J'ai posté les 2 réponses: flip
vertically
ethorizontally
...OriginalL'auteur Gauthier Boaglio
Le problème, c'est que vous êtes en boucle à travers l'ensemble de l'image au lieu de seulement la moitié de la largeur. Vous miroir double de votre image et obtenir la même image de sortie que celle que vous avez entrée.
si vous miroir à travers les axes Y le code doit être
Si vous voulez retourner si horizontaly il faut aller dans la moitié de la hauteur.
Ouais, mais même si je le fais ça me donne le même résultat de ce qui se passerait si je divise la largeur par 2.
Précisément ce qui est erroné?
Ok, donc si je n'ai pas diviser soit portée par deux, il suffit de cracher la même image que j'ai d'entrée. Si je divise la hauteur par deux dans l'axe, il fait pivoter l'image à la fois horizontalement et verticalement. Si je divise la largeur par 2, il fait la même chose. Je veux qu'il sorte que l'image n'bascule à l'horizontale.
OriginalL'auteur Alexandru Barbarosie