1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| # -*- coding:utf-8 -*-
def mise_a_jour_chaine(chaine,start,end):
return chaine[:start] + '1'*(end-start) + chaine[end:]
def fonction_decalage():
# je me mets dans les conditions de l'execution
# avec ton image de depart 400x400, 3 couleurs,
# chaque couleur unitaire etant une chaine (hexa) de 2 octets
ligne = colone = 400
longueur = ligne * colone * 3 * 2
# je ne charge pas d'image
# mon image sera une chaine de caracteres '0', avec la bonne taille
pim = '0'*longueur
#décallage
v=0
l=1
newimage=''
for i in range(ligne):
if l==1:
l=2
newimage=newimage+pim[colone*v*6:colone*(v+1)*6]
# nelle ligne suivante : je mets des "pixels" a '1'
# pour indiquer/retenir que ces pixels ont ete copies
pim = mise_a_jour_chaine(pim,colone*v*6,colone*(v+1)*6)
elif l==2:
l=3
newimage=pim[colone*v*6:colone*(v+1)*6]+newimage
# nelle ligne suivante : ... idem ...
pim = mise_a_jour_chaine(pim,colone*v*6,colone*(v+1)*6)
elif l==3:
l=4
newimage=newimage+pim[longueur-(colone*(v+1)*6):longueur-(colone*(v)*6)]
# nelle ligne suivante : ... idem ...
pim = mise_a_jour_chaine(pim,longueur-(colone*(v+1)*6),longueur-(colone*(v)*6))
else:
l=1
newimage=pim[longueur-(colone*(v+1)*6):longueur-(colone*(v)*6)]+newimage
# nelle ligne suivante : ... idem ...
pim = mise_a_jour_chaine(pim,longueur-(colone*(v+1)*6),longueur-(colone*(v)*6))
v=v+1
# je retourne pim qui ne devrait plus contenir que des '1' (si chaque pixel de base a ete utilise ...)
# et newimg qui ne devrait contenir que des '0' (si on n'a pas utilise plusieurs fois le meme pixel)
return pim, newimage |