pg waz herre :p
115
hacheuur.py
@ -4,7 +4,7 @@
|
||||
# haacheuur 0.24
|
||||
# port industriel de port la nouvelle - couleur - 60cm*30cm
|
||||
# image source : pln.jpg
|
||||
# image rendue : pln..20150910-11h59m53s.jpg
|
||||
# image obtenue : pln..20150910-11h59m53s.jpg
|
||||
|
||||
import sys
|
||||
import Image
|
||||
@ -19,61 +19,115 @@ import time
|
||||
# modifs du 30/10/2013
|
||||
import ImageEnhance
|
||||
|
||||
#ouvertrure de l'image source et conversion en mode 1bit
|
||||
#ouvertrure de l'image source et conversion en mode couleur 1bit
|
||||
im1 = Image.open(str(sys.argv[1])).convert('1')
|
||||
im2 = im1.copy()
|
||||
|
||||
#rapport d'allongement de la nouvelle image par rapport à la largeur de l'image originale
|
||||
allongement = 1
|
||||
allongement = 4
|
||||
|
||||
im3 = Image.new("RGBA",(im1.size[0], im1.size[1]))
|
||||
im4 = Image.new("RGBA",(im1.size[0]*allongement, im1.size[1]))
|
||||
|
||||
Larg = im1.size[0]
|
||||
Haut = im1.size[1]
|
||||
import pickle
|
||||
|
||||
loadfile = True
|
||||
|
||||
class Sequence:
|
||||
def __init__(s):
|
||||
randomCoupeHauteur = []
|
||||
s.randomCopyPosi =[]
|
||||
s.proportions=[]
|
||||
s.choix=[]
|
||||
s.sizeOutput=None
|
||||
s.sizeInput=None
|
||||
|
||||
"""
|
||||
seq = dict()
|
||||
seq["randomCoupeHauteur"] = []
|
||||
seq["randomCopyPosi"] = []
|
||||
seq["proportions"] = []
|
||||
seq["choix"] = []
|
||||
seq["sizeOutput"]= im4.size
|
||||
seq["sizeInput"] = im1.size
|
||||
"""
|
||||
if loadfile:
|
||||
seq=pickle.load(open("test.pickle"))
|
||||
|
||||
else :
|
||||
seq=Sequence()
|
||||
|
||||
for i in range(1):
|
||||
|
||||
for i in range(10):
|
||||
# nombre aleatoire compris dans les limites de l'image
|
||||
def randHaut(): return random.randint(0, im1.size[1])
|
||||
|
||||
# constitution de la liste des tranches horizontales
|
||||
# genre comme si qu'on avait un 16 pistes :)
|
||||
randomCoupeHauteur = [0, \
|
||||
randHaut(),randHaut(),randHaut(),randHaut(),randHaut(), \
|
||||
randHaut(),randHaut(),randHaut(),randHaut(),randHaut(), \
|
||||
randHaut(),randHaut(),randHaut(),randHaut(),randHaut(), \
|
||||
randHaut(),randHaut(),randHaut(),randHaut(),randHaut(), \
|
||||
randHaut(),randHaut(),randHaut(),randHaut(),randHaut(), \
|
||||
im1.size[1]]
|
||||
# nombre aleatoire compris dans les limites de l'image
|
||||
def randHaut():
|
||||
return random.randint(0, im1.size[1])
|
||||
|
||||
# rangement des valeurs des plus petites au plus grandes
|
||||
randomCoupeHauteur.sort()
|
||||
if loadfile:
|
||||
randomCoupeHauteur = seq.randomCoupeHauteur
|
||||
|
||||
# DEBUG
|
||||
liste = []
|
||||
else:
|
||||
randomCoupeHauteur = [0, \
|
||||
randHaut(),randHaut(),randHaut(),randHaut(), \
|
||||
randHaut(),randHaut(),randHaut(),randHaut(), \
|
||||
randHaut(),randHaut(),randHaut(),randHaut(), \
|
||||
randHaut(),randHaut(),randHaut(),randHaut(), \
|
||||
randHaut(),randHaut(),randHaut(),randHaut(), \
|
||||
randHaut(),randHaut(),randHaut(),randHaut(), \
|
||||
randHaut(),randHaut(),randHaut(),randHaut(), \
|
||||
randHaut(),randHaut(),randHaut(),randHaut(), \
|
||||
im1.size[1]]
|
||||
# rangement des valeurs des plus petites au plus grandes
|
||||
randomCoupeHauteur.sort()
|
||||
seq.randomCoupeHauteur = randomCoupeHauteur
|
||||
|
||||
# les hachures
|
||||
def Hacheur(haut, bas) :
|
||||
|
||||
n=0
|
||||
|
||||
i=0
|
||||
#!!!!!!!!!!
|
||||
while n<im4.size[0] :
|
||||
randomListe = [(1280,2),(640,4),(320,5),(240,4),(160,6),(120,4),(120,8),(80,16),(60,16),(20,32),(8,24),(8,16),(5,64),(3,24),(2,24),(1,128),(1,64),(1,6)]
|
||||
|
||||
choix = 0
|
||||
if loadfile:
|
||||
proportions = seq.proportions
|
||||
choix_rnd = seq.choix[i]
|
||||
randomCopyPosi = seq.randomCopyPosi[i]
|
||||
else:
|
||||
proportions = [(160,6),(120,4),(120,8),(80,16),(60,16),(20,32),(8,24),(8,16),(5,64),(3,24),(2,24),(1,256),(1,128),(1,64),(1,32),(1,16),(1,8)]
|
||||
seq.proportions = proportions
|
||||
#proportions = seq.proportions[]
|
||||
choix_rnd = random.randint(0, len(proportions)-1)
|
||||
#choix_rnd = random.randint(0, len(proportions)-1)
|
||||
seq.choix.append(choix_rnd)
|
||||
|
||||
|
||||
# positionnement de la copie, aleatoirement, entre 0 et la largeur totale de l'image
|
||||
randomCopyPosi = random.randint(0, (im1.size[0]-largeur))
|
||||
#randomCopyPosi = seq.randomCopyPosi
|
||||
seq.randomCopyPosi.append(randomCopyPosi)
|
||||
|
||||
i+=1
|
||||
|
||||
# tirage au sort
|
||||
randomFacteur = random.randint(0, len(randomListe)-1)
|
||||
|
||||
|
||||
#seq["choix"].append(choix_rnd)
|
||||
|
||||
# assignation des valeurs (paires) finales choisies
|
||||
randomCopyLargFinal = randomListe[randomFacteur][0]
|
||||
repeat = randomListe[randomFacteur][1]
|
||||
largeur = proportions[choix_rnd][0]
|
||||
repeat = proportions[choix_rnd][1]
|
||||
|
||||
# positionnement de la copie, aleatoirement, entre 0 et la largeur totale de l'image
|
||||
randomCopyPosi = random.randint(0, (im1.size[0]-randomCopyLargFinal))
|
||||
|
||||
#seq["randomCopyPosi"].append(randomCopyPosi)
|
||||
|
||||
cx1 = randomCopyPosi
|
||||
cx2 = randomCopyPosi + randomCopyLargFinal
|
||||
cx2 = randomCopyPosi + largeur
|
||||
# decoupage du sample
|
||||
im3 = im2.crop((cx1,haut,cx2,bas))
|
||||
|
||||
@ -83,7 +137,7 @@ for i in range(10):
|
||||
#collage, n fois, du sample
|
||||
while loop<repeat:
|
||||
px1 = n
|
||||
px2 = n + randomCopyLargFinal
|
||||
px2 = n + largeur
|
||||
|
||||
draw = ImageDraw.Draw(im3)
|
||||
|
||||
@ -92,7 +146,7 @@ for i in range(10):
|
||||
|
||||
im4.paste(im3, (px1, haut, px2, bas))
|
||||
|
||||
n = n + randomCopyLargFinal
|
||||
n = n + largeur
|
||||
loop = loop + 1
|
||||
|
||||
def TrancheHorizontale() :
|
||||
@ -113,10 +167,6 @@ for i in range(10):
|
||||
for j in range(len(randomCoupeHauteur)-1):
|
||||
Hacheur(randomCoupeHauteur[j], randomCoupeHauteur[j+1])
|
||||
|
||||
# DEBUG
|
||||
#print liste
|
||||
#print sorted(set(liste),key=liste.count)
|
||||
|
||||
# CTRL + S
|
||||
#chemin du script : scriptpy = sys.argv[0]
|
||||
#chemin de l'image : str(sys.argv[1])
|
||||
@ -124,6 +174,7 @@ for i in range(10):
|
||||
script = scriptpy[:-3]
|
||||
n = "%05d" % i
|
||||
im4.save(script+"."+n+"_"+strftime("%Y%m%d-%Hh%Mm%Ss", gmtime())+".png",'PNG', quality=100)
|
||||
pickle.dump(seq, open("test.pickle","w"))
|
||||
|
||||
#print script+"."+str(i)+"_"+strftime("%Y%m%d-%Hh%Mm%Ss", gmtime())+".jpg"
|
||||
#millis = int(round(time.time() * 1000))
|
||||
|
466
test.pickle
Normal file
@ -0,0 +1,466 @@
|
||||
(i__main__
|
||||
Sequence
|
||||
p0
|
||||
(dp1
|
||||
S'sizeInput'
|
||||
p2
|
||||
NsS'proportions'
|
||||
p3
|
||||
(lp4
|
||||
(I160
|
||||
I6
|
||||
tp5
|
||||
a(I120
|
||||
I4
|
||||
tp6
|
||||
a(I120
|
||||
I8
|
||||
tp7
|
||||
a(I80
|
||||
I16
|
||||
tp8
|
||||
a(I60
|
||||
I16
|
||||
tp9
|
||||
a(I20
|
||||
I32
|
||||
tp10
|
||||
a(I8
|
||||
I24
|
||||
tp11
|
||||
a(I8
|
||||
I16
|
||||
tp12
|
||||
a(I5
|
||||
I64
|
||||
tp13
|
||||
a(I3
|
||||
I24
|
||||
tp14
|
||||
a(I2
|
||||
I24
|
||||
tp15
|
||||
a(I1
|
||||
I256
|
||||
tp16
|
||||
a(I1
|
||||
I128
|
||||
tp17
|
||||
a(I1
|
||||
I64
|
||||
tp18
|
||||
a(I1
|
||||
I32
|
||||
tp19
|
||||
a(I1
|
||||
I16
|
||||
tp20
|
||||
a(I1
|
||||
I8
|
||||
tp21
|
||||
asS'randomCopyPosi'
|
||||
p22
|
||||
(lp23
|
||||
I312
|
||||
aI71
|
||||
aI349
|
||||
aI318
|
||||
aI486
|
||||
aI365
|
||||
aI131
|
||||
aI478
|
||||
aI35
|
||||
aI282
|
||||
aI310
|
||||
aI398
|
||||
aI447
|
||||
aI132
|
||||
aI213
|
||||
aI360
|
||||
aI25
|
||||
aI468
|
||||
aI496
|
||||
aI461
|
||||
aI377
|
||||
aI284
|
||||
aI250
|
||||
aI375
|
||||
aI60
|
||||
aI130
|
||||
aI104
|
||||
aI108
|
||||
aI322
|
||||
aI188
|
||||
aI18
|
||||
aI89
|
||||
aI119
|
||||
aI69
|
||||
aI276
|
||||
aI105
|
||||
aI143
|
||||
aI155
|
||||
aI328
|
||||
aI323
|
||||
aI290
|
||||
aI320
|
||||
aI188
|
||||
aI231
|
||||
aI252
|
||||
aI68
|
||||
aI225
|
||||
aI178
|
||||
aI396
|
||||
aI257
|
||||
aI269
|
||||
aI254
|
||||
aI18
|
||||
aI245
|
||||
aI234
|
||||
aI209
|
||||
aI31
|
||||
aI35
|
||||
aI298
|
||||
aI301
|
||||
aI190
|
||||
aI225
|
||||
aI300
|
||||
aI64
|
||||
aI86
|
||||
aI115
|
||||
aI41
|
||||
aI432
|
||||
aI304
|
||||
aI491
|
||||
aI454
|
||||
aI153
|
||||
aI27
|
||||
aI32
|
||||
aI322
|
||||
aI357
|
||||
aI193
|
||||
aI225
|
||||
aI435
|
||||
aI181
|
||||
aI315
|
||||
aI319
|
||||
aI69
|
||||
aI338
|
||||
aI369
|
||||
aI63
|
||||
aI118
|
||||
aI45
|
||||
aI78
|
||||
aI336
|
||||
aI347
|
||||
aI171
|
||||
aI80
|
||||
aI463
|
||||
aI37
|
||||
aI197
|
||||
aI189
|
||||
aI109
|
||||
aI145
|
||||
aI297
|
||||
aI379
|
||||
aI465
|
||||
aI165
|
||||
aI131
|
||||
aI185
|
||||
aI381
|
||||
aI484
|
||||
aI317
|
||||
aI267
|
||||
aI494
|
||||
aI162
|
||||
aI84
|
||||
aI409
|
||||
aI376
|
||||
aI236
|
||||
aI303
|
||||
aI21
|
||||
aI4
|
||||
aI37
|
||||
aI244
|
||||
aI286
|
||||
aI202
|
||||
aI206
|
||||
aI454
|
||||
aI453
|
||||
aI268
|
||||
aI113
|
||||
aI249
|
||||
aI408
|
||||
aI181
|
||||
aI417
|
||||
aI153
|
||||
aI476
|
||||
aI437
|
||||
aI199
|
||||
aI440
|
||||
aI377
|
||||
aI183
|
||||
aI400
|
||||
aI384
|
||||
aI469
|
||||
aI434
|
||||
aI27
|
||||
aI370
|
||||
aI373
|
||||
aI30
|
||||
aI29
|
||||
aI341
|
||||
aI497
|
||||
aI330
|
||||
aI308
|
||||
aI96
|
||||
aI74
|
||||
aI90
|
||||
aI151
|
||||
aI405
|
||||
aI349
|
||||
aI269
|
||||
aI104
|
||||
aI250
|
||||
aI490
|
||||
aI62
|
||||
aI258
|
||||
aI314
|
||||
aI331
|
||||
aI177
|
||||
aI343
|
||||
aI311
|
||||
aI155
|
||||
aI293
|
||||
aI389
|
||||
aI88
|
||||
aI100
|
||||
aI218
|
||||
aI378
|
||||
aI302
|
||||
aI282
|
||||
aI403
|
||||
aI243
|
||||
aI153
|
||||
asS'sizeOutput'
|
||||
p24
|
||||
NsS'randomCoupeHauteur'
|
||||
p25
|
||||
(lp26
|
||||
I0
|
||||
aI44
|
||||
aI48
|
||||
aI65
|
||||
aI86
|
||||
aI87
|
||||
aI95
|
||||
aI112
|
||||
aI116
|
||||
aI119
|
||||
aI122
|
||||
aI135
|
||||
aI135
|
||||
aI136
|
||||
aI163
|
||||
aI255
|
||||
aI260
|
||||
aI265
|
||||
aI265
|
||||
aI306
|
||||
aI315
|
||||
aI324
|
||||
aI349
|
||||
aI350
|
||||
aI368
|
||||
aI370
|
||||
aI385
|
||||
aI415
|
||||
aI425
|
||||
aI460
|
||||
aI492
|
||||
aI505
|
||||
aI510
|
||||
aI512
|
||||
asS'choix'
|
||||
p27
|
||||
(lp28
|
||||
I7
|
||||
aI7
|
||||
aI3
|
||||
aI9
|
||||
aI5
|
||||
aI2
|
||||
aI11
|
||||
aI6
|
||||
aI13
|
||||
aI7
|
||||
aI0
|
||||
aI3
|
||||
aI14
|
||||
aI16
|
||||
aI7
|
||||
aI3
|
||||
aI13
|
||||
aI11
|
||||
aI6
|
||||
aI15
|
||||
aI14
|
||||
aI3
|
||||
aI15
|
||||
aI4
|
||||
aI10
|
||||
aI1
|
||||
aI8
|
||||
aI3
|
||||
aI6
|
||||
aI16
|
||||
aI9
|
||||
aI0
|
||||
aI0
|
||||
aI0
|
||||
aI3
|
||||
aI7
|
||||
aI15
|
||||
aI14
|
||||
aI9
|
||||
aI8
|
||||
aI16
|
||||
aI16
|
||||
aI6
|
||||
aI12
|
||||
aI1
|
||||
aI0
|
||||
aI11
|
||||
aI3
|
||||
aI5
|
||||
aI4
|
||||
aI3
|
||||
aI3
|
||||
aI0
|
||||
aI1
|
||||
aI14
|
||||
aI1
|
||||
aI0
|
||||
aI16
|
||||
aI7
|
||||
aI0
|
||||
aI8
|
||||
aI2
|
||||
aI15
|
||||
aI2
|
||||
aI0
|
||||
aI2
|
||||
aI4
|
||||
aI6
|
||||
aI16
|
||||
aI16
|
||||
aI5
|
||||
aI9
|
||||
aI6
|
||||
aI9
|
||||
aI6
|
||||
aI2
|
||||
aI16
|
||||
aI16
|
||||
aI7
|
||||
aI4
|
||||
aI5
|
||||
aI6
|
||||
aI1
|
||||
aI5
|
||||
aI3
|
||||
aI0
|
||||
aI12
|
||||
aI1
|
||||
aI1
|
||||
aI7
|
||||
aI4
|
||||
aI5
|
||||
aI9
|
||||
aI10
|
||||
aI8
|
||||
aI5
|
||||
aI8
|
||||
aI1
|
||||
aI13
|
||||
aI10
|
||||
aI14
|
||||
aI9
|
||||
aI11
|
||||
aI11
|
||||
aI5
|
||||
aI11
|
||||
aI12
|
||||
aI12
|
||||
aI10
|
||||
aI14
|
||||
aI7
|
||||
aI0
|
||||
aI6
|
||||
aI3
|
||||
aI9
|
||||
aI15
|
||||
aI6
|
||||
aI11
|
||||
aI0
|
||||
aI1
|
||||
aI16
|
||||
aI10
|
||||
aI8
|
||||
aI15
|
||||
aI8
|
||||
aI7
|
||||
aI8
|
||||
aI10
|
||||
aI7
|
||||
aI4
|
||||
aI9
|
||||
aI11
|
||||
aI13
|
||||
aI6
|
||||
aI13
|
||||
aI13
|
||||
aI4
|
||||
aI2
|
||||
aI10
|
||||
aI3
|
||||
aI8
|
||||
aI14
|
||||
aI8
|
||||
aI9
|
||||
aI3
|
||||
aI2
|
||||
aI8
|
||||
aI2
|
||||
aI11
|
||||
aI6
|
||||
aI4
|
||||
aI7
|
||||
aI1
|
||||
aI2
|
||||
aI7
|
||||
aI3
|
||||
aI11
|
||||
aI2
|
||||
aI3
|
||||
aI1
|
||||
aI5
|
||||
aI13
|
||||
aI0
|
||||
aI3
|
||||
aI2
|
||||
aI9
|
||||
aI2
|
||||
aI6
|
||||
aI11
|
||||
aI9
|
||||
aI15
|
||||
aI7
|
||||
aI0
|
||||
aI16
|
||||
aI3
|
||||
aI16
|
||||
aI16
|
||||
aI5
|
||||
aI13
|
||||
aI1
|
||||
asb.
|
BIN
test/test..00000_20151019-18h11m09s.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
test/test..00000_20151019-18h19m52s.png
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
test/test..00000_20151019-18h35m17s.png
Normal file
After Width: | Height: | Size: 22 KiB |
BIN
test/test..00000_20151019-18h44m02s.png
Normal file
After Width: | Height: | Size: 20 KiB |
BIN
test/test..00000_20151019-18h44m19s.png
Normal file
After Width: | Height: | Size: 42 KiB |
BIN
test/test..00000_20151019-18h56m10s.png
Normal file
After Width: | Height: | Size: 36 KiB |
BIN
test/test..00000_20151019-19h10m37s.png
Normal file
After Width: | Height: | Size: 24 KiB |
BIN
test/test..00000_20151019-19h10m50s.png
Normal file
After Width: | Height: | Size: 24 KiB |
BIN
test/test..00000_20151019-19h10m52s.png
Normal file
After Width: | Height: | Size: 24 KiB |
BIN
test/test.png
Normal file
After Width: | Height: | Size: 83 KiB |