Browse Source

pixelisation v2

rep 5 years ago
parent
commit
8045d3c2ba
5 changed files with 6327 additions and 10642 deletions
  1. 1112
    0
      ghost-diagrams-0.8.py
  2. 268
    0
      haacheuur.daube.py
  3. 182
    158
      haacheuur.py
  4. 271
    0
      hacheur.py
  5. 4494
    10484
      test.pickle

+ 1112
- 0
ghost-diagrams-0.8.py
File diff suppressed because it is too large
View File


+ 268
- 0
haacheuur.daube.py View File

@@ -0,0 +1,268 @@
1
+#!/usr/bin/python
2
+# coding: utf-8
3
+
4
+# haacheuur 0.24
5
+# port industriel de port la nouvelle - couleur - 60cm*30cm
6
+# image source : pln.jpg
7
+# image obtenue : pln..20150910-11h59m53s.jpg
8
+
9
+# pln.png 3936x1024 pix
10
+
11
+'''
12
+image input puredata : 16384 width x 768 height
13
+donc par exemple, pour 3 images :
14
+3 x 16384 = 49152 pixels en tout
15
+'''
16
+
17
+import sys
18
+import Image
19
+import random
20
+import os
21
+import ImageDraw
22
+import ImageFont
23
+import ImageFilter
24
+from time import gmtime, strftime
25
+import time
26
+
27
+if not len(sys.argv) > 1:
28
+    raise SystemExit("Usage: %s image_source" % sys.argv[0])
29
+
30
+# modifs du 30/10/2013
31
+import ImageEnhance
32
+
33
+
34
+#rapport d'allongement de la nouvelle image par rapport à la largeur de l'image originale
35
+allongement = 1
36
+
37
+
38
+#ouverture de l'image source et conversion en mode couleur 1bit
39
+#1 bit (sys.argv[1])).convert('1') et niveaux de gris : (sys.argv[1])).convert('L')
40
+im1 = Image.open(str(sys.argv[1]))
41
+im2 = im1.copy()
42
+im3 = Image.new("RGBA",(im1.size[0], im1.size[1]))
43
+im5 = Image.new("RGBA",(im1.size[0], im1.size[1]))
44
+im4 = Image.new("RGBA",(im1.size[0]*allongement, im1.size[1]))
45
+#im4 = Image.new("RGBA",(49152, im1.size[1]))
46
+
47
+Larg = im1.size[0]
48
+Haut = im1.size[1]
49
+import pickle
50
+
51
+loadfile = False
52
+
53
+class Sequence:
54
+	def __init__(s):
55
+		randomCoupeHauteur = []
56
+		s.randomCopyPosi =[]
57
+		s.proportions=[]
58
+		s.choix=[]
59
+		s.sizeOutput=None
60
+		s.sizeInput=None
61
+	
62
+"""
63
+seq = dict()
64
+seq["randomCoupeHauteur"] = []
65
+seq["randomCopyPosi"] = []
66
+seq["proportions"] = []
67
+seq["choix"] = []
68
+seq["sizeOutput"]= im4.size
69
+seq["sizeInput"] = im1.size
70
+"""
71
+
72
+if loadfile:
73
+	seq=pickle.load(open("test.pickle"))
74
+
75
+else :
76
+	seq=Sequence()
77
+	
78
+for i in range(1):
79
+	# constitution de la liste des tranches horizontales
80
+	# genre comme si qu'on avait un 16 pistes :)
81
+	# nombre aleatoire compris dans les limites de l'image
82
+	def randHaut():
83
+		return random.randint(0, im1.size[1]/8)*8
84
+
85
+	if loadfile:
86
+		randomCoupeHauteur = seq.randomCoupeHauteur
87
+
88
+	else:
89
+		randomCoupeHauteur = [0, \
90
+		randHaut(),randHaut(),randHaut(),randHaut(), \
91
+		randHaut(),randHaut(),randHaut(),randHaut(), \
92
+		randHaut(),randHaut(),randHaut(),randHaut(), \
93
+		randHaut(),randHaut(),randHaut(),randHaut(), \
94
+		randHaut(),randHaut(),randHaut(),randHaut(), \
95
+		randHaut(),randHaut(),randHaut(),randHaut(), \
96
+		randHaut(),randHaut(),randHaut(),randHaut(), \
97
+		randHaut(),randHaut(),randHaut(),randHaut(), \
98
+		im1.size[1]]
99
+		# rangement des valeurs des plus petites au plus grandes
100
+		randomCoupeHauteur.sort()
101
+		seq.randomCoupeHauteur = randomCoupeHauteur
102
+
103
+	# les hachures
104
+	def Hacheur(haut, bas) :
105
+
106
+		n=0
107
+		i=0
108
+		#!!!!!!!!!!
109
+		while n<im4.size[0] :
110
+			if loadfile:
111
+				proportions = seq.proportions
112
+				choix_rnd = seq.choix[i]
113
+				randomCopyPosi = seq.randomCopyPosi[i]
114
+			else:
115
+
116
+				'''
117
+				8 16 24 32 40 48 56 64 72 80 88 96 104 112 120 128 136 144 152 160 168
118
+				'''
119
+
120
+				#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)]
121
+				#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)]
122
+				#proportions = [(1280,1),(800,1),(800,2),(640,1),(640,2),(640,4),(320,4),(320,2),(320,1),(160,1),(120,2),(120,3),(80,6),(64,12),(64,6),(32,4),(32,8),(32,16),(32,32),(32,64)]
123
+
124
+				proportions = [(16,2),(8,2),(4,2),(2,2),(1,2)]
125
+
126
+				#proportion pln pour output final avec puredata/gem (decalage phase 32pix)
127
+				
128
+				'''
129
+				proportions = [	(768,2),\
130
+								(512,4),\
131
+								(256,8),\
132
+								(128,4),(128,16),\
133
+								(64,4),(64,8),(64,16),\
134
+								(32,8),(32,16),(32,32),(32,32),(32,64),(32,128),\
135
+								(16,1),(16,4),(16,16),(16,64)]
136
+				'''
137
+				#proportions = [(512,1),(256,2),(128,4),(64,8),(64,4),(32,16),(32,32),(32,8),(16,8),(16,32),(8,64),(8,32),(8,16)]
138
+				#proportions = [(32,1),(32,2),(32,3),(32,4),(32,5),(32,6),(32,8),(32,12),(32,16),(32,24),(32,32),(32,64)]
139
+				
140
+				seq.proportions = proportions
141
+				#proportions = seq.proportions[]
142
+				choix_rnd = random.randint(0, len(proportions)-1)
143
+				#choix_rnd = random.randint(0, len(proportions)-1)
144
+				seq.choix.append(choix_rnd)
145
+				
146
+				largeur = proportions[choix_rnd][0]
147
+				
148
+				# positionnement de la copie, aleatoirement, entre 0 et la largeur totale de l'image 
149
+				randomCopyPosi = random.randint(0, (im1.size[0]-largeur))
150
+				#randomCopyPosi = seq.randomCopyPosi
151
+				seq.randomCopyPosi.append(randomCopyPosi)
152
+
153
+			i+=1
154
+			
155
+			# tirage au sort
156
+			#seq["choix"].append(choix_rnd)
157
+
158
+			# assignation des valeurs (paires) finales choisies
159
+			largeur = proportions[choix_rnd][0]			
160
+			repeat = proportions[choix_rnd][1]
161
+
162
+			#seq["randomCopyPosi"].append(randomCopyPosi)
163
+
164
+			# pixellisation : choix de la taille du pixel = pixelSize
165
+			#pixelSizeList = [1,1,1,1,1,1,1,1,4,8]
166
+			pixelSizeList = [1,2,4,8]
167
+			pixelSizeIndex = random.randint(0,len(pixelSizeList)-1)
168
+			pixelSize = pixelSizeList[pixelSizeIndex]
169
+			
170
+			cropfinal = [largeur,bas-haut]
171
+			hauteur = bas-haut
172
+			'''
173
+			haut gauche(0,0).
174
+			haut droit (largeur-1 , 0).
175
+			bas gauche (0 , hauteur-1).
176
+			bas droit (largeur-1, hauteur-1)
177
+			'''
178
+			
179
+			if largeur % pixelSize != 0:
180
+				croop = largeur / pixelSize
181
+				largeur = (int(croop) + 1 ) * pixelSize
182
+				
183
+			if  hauteur % pixelSize != 0:
184
+				croop2 = hauteur / pixelSize
185
+				hauteur = (int(croop2) + 1 ) * pixelSize
186
+				
187
+			# decoupage du sample
188
+			im5 = im2.crop((randomCopyPosi,haut,randomCopyPosi+largeur,haut+hauteur))
189
+			
190
+			'''COLLAGE DU SAMPLE '''
191
+			loop = 0
192
+			while loop<repeat:	
193
+				px1 = n
194
+				px2 = n + largeur
195
+#				draw = ImageDraw.Draw(im3)
196
+				
197
+				''' PIXELISATION'''
198
+				im5 = im5.resize((im3.size[0]/pixelSize, im3.size[1]/pixelSize), Image.NEAREST)
199
+				im5 = im5.resize((im3.size[0]*pixelSize, im3.size[1]*pixelSize), Image.NEAREST)
200
+				im3 = im5.crop(0,0,cropfinal[0]-1,cropfinal[1]-1)
201
+				
202
+				#lignes colorées de 1 pix
203
+				draw.line((im3.size[0]-1, 0, im3.size[0]-1, im3.size[1]-1), fill="rgb(255,255,255)")
204
+				im4.paste(im3, (px1, haut, px2, bas))
205
+				
206
+				n = n + largeur
207
+				loop = loop + 1
208
+	
209
+	''' OPTIONS'''	
210
+	def TrancheHorizontale() :
211
+		# tirage au hasard de la bande copiee
212
+		pos = random.randint(0, im1.size[1]-im1.size[1]/20)
213
+		# copiage
214
+		im5 = im2.crop((0,pos,im1.size[0],pos+im1.size[1]/20))
215
+		
216
+		# le soulignage en blanc
217
+		draw = ImageDraw.Draw(im5)
218
+		draw.line((0, im5.size[1]-1, im5.size[0], im5.size[1]-1), fill="black")
219
+		draw.line((0, 1, im5.size[0], 1), fill="black")
220
+		
221
+		# collage	
222
+		im4.paste(im5, (0,pos,im1.size[0],pos+im1.size[1]/20))
223
+
224
+	# HAACHEUUR
225
+	for j in range(len(randomCoupeHauteur)-1):
226
+		Hacheur(randomCoupeHauteur[j], randomCoupeHauteur[j+1])
227
+	
228
+	''' SAUVEGARDE	
229
+	'''
230
+	
231
+	# CTRL + S
232
+	#chemin du script	: scriptpy = sys.argv[0]
233
+	#chemin de l'image	: str(sys.argv[1])
234
+	scriptpy = str(sys.argv[1])
235
+	script = scriptpy[:-3]
236
+	n = "%05d" % i
237
+	im4.save(script+"."+n+"_"+strftime("%Y%m%d-%Hh%Mm%Ss", gmtime())+".png",'PNG', quality=100)
238
+	
239
+	#pickle.dump(seq, open("test.pickle","w"))
240
+	pickle.dump(seq, open(script+"."+n+"_"+strftime("%Y%m%d-%Hh%Mm%Ss", gmtime())+".pickle","w"))
241
+	#print script+"."+str(i)+"_"+strftime("%Y%m%d-%Hh%Mm%Ss", gmtime())+".jpg"
242
+	#millis = int(round(time.time() * 1000))
243
+	#print "millis-secondes : "+str(millis)
244
+
245
+
246
+
247
+#obtenir les valeurs RGB des pixels de l'image
248
+'''
249
+from PIL import Image
250
+
251
+im = Image.open('test.png')
252
+pixels = list(im.getdata())
253
+width, height = im.size
254
+
255
+pixels = [pixels[i * width:(i + 1) * width] for i in xrange(height)]
256
+
257
+for r in range(0, height-⁠1) :
258
+        print "pixels = "+str(pixels[r])
259
+
260
+print " "
261
+print "len(pixels) = "+str(len(pixels))
262
+print "width = "+str(width)
263
+print "height = "+str(height)
264
+print " "
265
+
266
+#tintin = im.tostring( "raw", "RGBA", 0, -⁠1)
267
+#print "tostring = "+tintin
268
+'''

+ 182
- 158
haacheuur.py View File

@@ -34,22 +34,12 @@ allongement = 2
34 34
 #im1 = Image.open(str(sys.argv[1])).convert('L')
35 35
 im1 = Image.open(str(sys.argv[1]))
36 36
 im2 = im1.copy()
37
-im3 = Image.new("RGBA",(im1.size[0], im1.size[1]))
37
+
38 38
 im4 = Image.new("RGBA",(im1.size[0]*allongement, im1.size[1]))
39
+im5 = Image.new("RGBA",(im1.size[0]*allongement, im1.size[1]))
39 40
 
40 41
 boutImage = Image.new("RGBA",(im1.size[0], im1.size[1]))
41 42
 
42
-pix2 	=	 im3.resize((im3.size[0]/2, 	im3.size[1]/2), 	Image.NEAREST)
43
-pix4 	=	 im3.resize((im3.size[0]/4, 	im3.size[1]/4), 	Image.NEAREST)
44
-pix8 	=	 im3.resize((im3.size[0]/8, 	im3.size[1]/8), 	Image.NEAREST)
45
-pix16 	=	 im3.resize((im3.size[0]/16, 	im3.size[1]/16),	Image.NEAREST)
46
-pix32 	=	 im3.resize((im3.size[0]/32, 	im3.size[1]/32),	Image.NEAREST)
47
-pix64 	=	 im3.resize((im3.size[0]/64, 	im3.size[1]/64),	Image.NEAREST)
48
-pix128 	=	 im3.resize((im3.size[0]/128, 	im3.size[1]/128),	Image.NEAREST)
49
-pix256 	=	 im3.resize((im3.size[0]/256, 	im3.size[1]/256), 	Image.NEAREST)
50
-pix512 	=	 im3.resize((im3.size[0]/512, 	im3.size[1]/512), 	Image.NEAREST)
51
-pix1024 =	 im3.resize((im3.size[0]/1024,	im3.size[1]/1024), 	Image.NEAREST)
52
-
53 43
 Larg = im1.size[0]
54 44
 Haut = im1.size[1]
55 45
 import pickle
@@ -80,168 +70,202 @@ if loadfile:
80 70
 else :
81 71
 	seq=Sequence()
82 72
 	
73
+'''
83 74
 for i in range(1):
75
+'''
84 76
 	
85 77
 		
86
-	# constitution de la liste des tranches horizontales
87
-	# genre comme si qu'on avait un 16 pistes :)
88
-	# nombre aleatoire compris dans les limites de l'image
89
-	def randHaut():
90
-		return random.randint(0, im1.size[1]/16)*16
78
+# constitution de la liste des tranches horizontales
79
+# genre comme si qu'on avait un 16 pistes :)
80
+# nombre aleatoire compris dans les limites de l'image
81
+def randHaut():
82
+	return random.randint(0, im1.size[1]/32)*32
83
+
84
+if loadfile:
85
+	randomCoupeHauteur = seq.randomCoupeHauteur
86
+	
87
+else:
88
+	randomCoupeHauteur = [0, \
89
+	randHaut(),randHaut(),randHaut(),randHaut(), \
90
+	randHaut(),randHaut(),randHaut(),randHaut(), \
91
+	randHaut(),randHaut(),randHaut(),randHaut(), \
92
+	randHaut(),randHaut(),randHaut(),randHaut(), \
93
+	randHaut(),randHaut(),randHaut(),randHaut(), \
94
+	randHaut(),randHaut(),randHaut(),randHaut(), \
95
+	randHaut(),randHaut(),randHaut(),randHaut(), \
96
+	randHaut(),randHaut(),randHaut(),randHaut(), \
97
+	im1.size[1]]
98
+	# rangement des valeurs des plus petites au plus grandes
99
+	randomCoupeHauteur.sort()
100
+	seq.randomCoupeHauteur = randomCoupeHauteur
91 101
 	
92
-	if loadfile:
93
-		randomCoupeHauteur = seq.randomCoupeHauteur
94
-		
95
-	else:
96
-		randomCoupeHauteur = [0, \
97
-		randHaut(),randHaut(),randHaut(),randHaut(), \
98
-		randHaut(),randHaut(),randHaut(),randHaut(), \
99
-		randHaut(),randHaut(),randHaut(),randHaut(), \
100
-		randHaut(),randHaut(),randHaut(),randHaut(), \
101
-		randHaut(),randHaut(),randHaut(),randHaut(), \
102
-		randHaut(),randHaut(),randHaut(),randHaut(), \
103
-		randHaut(),randHaut(),randHaut(),randHaut(), \
104
-		randHaut(),randHaut(),randHaut(),randHaut(), \
105
-		im1.size[1]]
106
-		# rangement des valeurs des plus petites au plus grandes
107
-		randomCoupeHauteur.sort()
108
-		seq.randomCoupeHauteur = randomCoupeHauteur
109
-		
110
-	# les hachures
111
-	def Hacheur(haut, bas) :
112
-		
113
-		n=0
114
-		i=0
115
-		#!!!!!!!!!!
116
-		while n<im4.size[0] :
102
+# les hachures
103
+def Hacheur(haut, bas) :
104
+	
105
+	n=0
106
+	i=0
107
+	#!!!!!!!!!!
108
+	while n<im4.size[0] :
109
+		
110
+		if loadfile:
111
+			proportions = seq.proportions
112
+			choix_rnd = seq.choix[i]
113
+			randomCopyPosi = seq.randomCopyPosi[i]
114
+		else:
115
+			'''
116
+			8 16 24 32 40 48 56 64 72 80 88 96 104 112 120 128 136 144 152 160 168
117
+			'''
118
+			#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)]
119
+			#proportions = [(2560,1),(1280,2),(1280,1),(640,2),(640,1),(320,4),(320,2),(160,6),(160,2),(120,4),(120,8),(120,1),(80,16),(80,4),(64,16),(64,8),(64,1),(24,32),(24,16),(16,32),(16,16),(16,8),(16,2),(16,1),(8,24),(8,16),(8,8),(8,4),(8,2),(8,1)]
120
+			#proportions = [(2560,1),(1280,2),(1280,1),(640,2),(640,1),(320,4),(320,2),(160,6),(160,2),(120,4),(120,8),(120,1),(80,16),(80,4),(64,16),(64,8),(64,1),(32,1),(32,2),(32,4),(32,8),(32,32),(16,1),(16,2),(16,4),(16,16),(16,32)]
121
+			#proportions = [(2560,1),(1280,2),(1280,1),(640,2),(640,1),(320,4),(320,2),(160,6),(160,2),(120,4),(120,8),(120,1),(80,16),(80,4),(64,16),(64,8),(64,1),(32,1),(32,2),(32,4),(32,8),(32,32),(16,1),(16,2),(16,4),(16,16),(16,32)]
122
+			proportions = [	(16,2),(16,4),(16,8),(16,16),(16,32),\
123
+							(32,8),(32,16),(32,32),\
124
+							(64,4),(64,8),(64,16),\
125
+							(128,2),(128,4),(128,8),\
126
+							(256,1),(256,2),(256,4),\
127
+							(512,1),(512,2),\
128
+							(1024,1),(1024,2),\
129
+							(2048,1)]
117 130
 			
118
-			if loadfile:
119
-				proportions = seq.proportions
120
-				choix_rnd = seq.choix[i]
121
-				randomCopyPosi = seq.randomCopyPosi[i]
122
-			else:
123
-				'''
124
-				8 16 24 32 40 48 56 64 72 80 88 96 104 112 120 128 136 144 152 160 168
125
-				'''
126
-				#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)]
127
-				#proportions = [(2560,1),(1280,2),(1280,1),(640,2),(640,1),(320,4),(320,2),(160,6),(160,2),(120,4),(120,8),(120,1),(80,16),(80,4),(64,16),(64,8),(64,1),(24,32),(24,16),(16,32),(16,16),(16,8),(16,2),(16,1),(8,24),(8,16),(8,8),(8,4),(8,2),(8,1)]
128
-				#proportions = [(2560,1),(1280,2),(1280,1),(640,2),(640,1),(320,4),(320,2),(160,6),(160,2),(120,4),(120,8),(120,1),(80,16),(80,4),(64,16),(64,8),(64,1),(32,1),(32,2),(32,4),(32,8),(32,32),(16,1),(16,2),(16,4),(16,16),(16,32)]
129
-				proportions = [(2560,1),(1280,2),(1280,1),(640,2),(640,1),(320,4),(320,2),(160,6),(160,2),(120,4),(120,8),(120,1),(80,16),(80,4),(64,16),(64,8),(64,1),(32,1),(32,2),(32,4),(32,8),(32,32),(16,1),(16,2),(16,4),(16,16),(16,32)]
130
-				
131
-				'''
132
-				1,2,4,8,16,32,64,128,256,512,1024
133
-				'''
134
-				
135
-				seq.proportions = proportions
136
-				#proportions = seq.proportions[]
137
-				choix_rnd = random.randint(0, len(proportions)-1)
138
-				#choix_rnd = random.randint(0, len(proportions)-1)
139
-				seq.choix.append(choix_rnd)
140
-				
141
-				largeur = proportions[choix_rnd][0]
142
-
143
-				# positionnement de la copie, aleatoirement, entre 0 et la largeur totale de l'image 
144
-				randomCopyPosi = random.randint(0, (im1.size[0]-largeur))
145
-				#randomCopyPosi = seq.randomCopyPosi
146
-				seq.randomCopyPosi.append(randomCopyPosi)
147 131
 			
148
-			i+=1
149
-
150
-			# tirage au sort
132
+			'''
133
+			proportions = [	(768,2),\
134
+							(512,4),\
135
+							(256,8),\
136
+							(128,4),(128,16),\
137
+							(64,4),(64,8),(64,16),\
138
+							(32,8),(32,16),(32,32),(32,32),(32,64),(32,128),\
139
+							(16,1),(16,4),(16,16),(16,64)]
140
+			'''
141
+							
142
+			'''
143
+			1,2,4,8,16,32,64,128,256,512,1024
144
+			'''
151 145
 			
152
-			#seq["choix"].append(choix_rnd)
146
+			seq.proportions = proportions
147
+			#proportions = seq.proportions[]
148
+			choix_rnd = random.randint(0, len(proportions)-1)
149
+			#choix_rnd = random.randint(0, len(proportions)-1)
150
+			seq.choix.append(choix_rnd)
153 151
 			
154
-			# assignation des valeurs (paires) finales choisies
155
-			largeur = proportions[choix_rnd][0]			
156
-			repeat = proportions[choix_rnd][1]
152
+			largeur = proportions[choix_rnd][0]
157 153
 
158
-			#seq["randomCopyPosi"].append(randomCopyPosi)
154
+			# positionnement de la copie, aleatoirement, entre 0 et la largeur totale de l'image 
155
+			randomCopyPosi = random.randint(0, (im1.size[0]-largeur))
156
+			#randomCopyPosi = seq.randomCopyPosi
157
+			seq.randomCopyPosi.append(randomCopyPosi)
158
+		
159
+		i+=1
160
+
161
+		# tirage au sort
162
+		
163
+		#seq["choix"].append(choix_rnd)
164
+		
165
+		# assignation des valeurs (paires) finales choisies
166
+		largeur = proportions[choix_rnd][0]			
167
+		repeat = proportions[choix_rnd][1]
168
+
169
+		#seq["randomCopyPosi"].append(randomCopyPosi)
170
+		
171
+		cx1 = randomCopyPosi
172
+		cx2 = randomCopyPosi + largeur
173
+		#print "im3 = im2.crop : "+str(im3.size)
159 174
 			
160
-			cx1 = randomCopyPosi
161
-			cx2 = randomCopyPosi + largeur
162
-			# decoupage du sample
163
-			im3 = im2.crop((cx1,haut,cx2,bas))
164
-			#print "im3 = im2.crop : "+str(im3.size)
175
+		draw = ImageDraw.Draw(im4)
165 176
 				
166
-			draw = ImageDraw.Draw(im4)
167
-					
168
-			loop = 0
169
-			
170
-			#pixelSizeList = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,4,4,8]
171
-			pixelSizeList = [1,1,1,1,4,8,16]
177
+		loop = 0
178
+		
179
+		#pixelSizeList = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,4,4,8]
180
+		pixelSizeList = [1,1,1,1,1,1,1,1,1,1,2,2,4,8,16]
181
+		pixelSizeIndex = random.randint(0,len(pixelSizeList)-1)
182
+		pixelSize = pixelSizeList[pixelSizeIndex]
183
+		
184
+		#print " pixelSize = "+str(pixelSize)
185
+		
186
+		
187
+		cropfinal = [largeur,bas-haut]
188
+		hauteur = bas-haut
189
+		
190
+		'''
191
+		haut gauche(0,0).
192
+		haut droit (largeur-1 , 0).
193
+		bas gauche (0 , hauteur-1).
194
+		bas droit (largeur-1, hauteur-1)
195
+		'''
196
+		
197
+		if largeur % pixelSize != 0:
198
+			croop = largeur / pixelSize
199
+			largeur = (int(croop) + 1 ) * pixelSize
172 200
 			
173
-			#print " pixelSize = "+str(pixelSize)
201
+		if  hauteur % pixelSize != 0:
202
+			croop2 = hauteur / pixelSize
203
+			hauteur = (int(croop2) + 1 ) * pixelSize
204
+		
205
+		# decoupage du sample
206
+		im5 = im2.crop((randomCopyPosi,haut,randomCopyPosi+largeur,haut+hauteur))
207
+		im3 = im2.crop((cx1,haut,cx2,bas))
208
+		
209
+		''' COLLAGE DU SAMPLE
210
+		'''
211
+		
212
+		#boutImage = im3
213
+		#im3 = Image.new("RGBA",(im1.size[0], im1.size[1]))
214
+		
215
+		''' PIXELISATION '''
216
+		if pixelSize > 1 :
217
+			im5 = im5.resize((im3.size[0]/pixelSize, im3.size[1]/pixelSize), Image.NEAREST)
218
+			im5 = im5.resize((im3.size[0]*pixelSize, im3.size[1]*pixelSize), Image.NEAREST)
219
+		
220
+		im3 = im5.crop((0,0,cropfinal[0],cropfinal[1]))
221
+		
222
+		while loop<repeat:
223
+			px1 = n
224
+			px2 = n + largeur	
225
+			#lignes colorées de 1 pix
226
+			#draw = ImageDraw.Draw(boutImage)
227
+			#draw.line((0,0,0,4), fill="rgb(128,128,128)")
174 228
 			
229
+			draw = ImageDraw.Draw(im3)
230
+			draw.line((0, 0, largeur-1, 0), fill="rgb(255,255,255)")
231
+			draw.line((largeur-1, 0, largeur-1, bas-haut), fill="rgb(255,255,255)")
175 232
 			
176
-			''' COLLAGE DU SAMPLE
177
-			'''
233
+			im4.paste(im3, (px1, haut, px2, bas))
178 234
 			
179
-			boutImage = im3
235
+			n = n + largeur
236
+			loop = loop + 1
180 237
 
181
-			while loop<repeat:
182
-				
183
-				px1 = n
184
-				px2 = n + largeur
185
-				
186
-				pixelSizeIndex = random.randint(0,len(pixelSizeList)-1)
187
-				pixelSize = pixelSizeList[pixelSizeIndex]
188
-				
189
-				''' PIXELISATION '''
190
-				
191
-				boutImage = im3.resize((im3.size[0]/pixelSize, im3.size[1]/pixelSize), Image.ANTIALIAS)
192
-				boutImage = boutImage.resize((im3.size[0], im3.size[1]), Image.NEAREST)
193
-				
194
-				#lignes colorées de 1 pix
195
-#				draw = ImageDraw.Draw(boutImage)
196
-#				draw.line((0,0,0,4), fill="rgb(128,128,128)")
197
-#				draw.line((0,0,4,0), fill="rgb(128,128,128)")
198
-				
199
-				im4.paste(boutImage, (px1, haut, px2, bas))
200
-				
201
-				pix2 pix4 pix8 pix16 pix32 pix64 pix128 pix256 pix512 pix1024
202
-				
203
-				'''
204
-				draw = ImageDraw.Draw(im4)
205
-				draw.line((px1-2, haut, px1+2, haut), fill="rgb(0,0,0)")
206
-				draw.line((px1, haut-2, px1, haut+2), fill="rgb(0,0,0)")		
207
-				
208
-				draw.line((px1-2, bas-1, px1+2, bas-1), fill="rgb(0,0,0)")
209
-				draw.line((px1, bas-2, px1, bas+2), fill="rgb(0,0,0)")
210
-				'''
211
-				
212
-				n = n + largeur
213
-				loop = loop + 1
214
-	
215
-	''' OPTIONS '''	
216
-	def TrancheHorizontale() :
217
-		# tirage au hasard de la bande copiee
218
-		pos = random.randint(0, im1.size[1]-im1.size[1]/20)
219
-		# copiage
220
-		im5 = im2.crop((0,pos,im1.size[0],pos+im1.size[1]/20))
221
-		
222
-		# le soulignage en blanc
223
-		draw = ImageDraw.Draw(im5)
224
-		draw.line((0, im5.size[1]-1, im5.size[0], im5.size[1]-1), fill="black")
225
-		draw.line((0, 1, im5.size[0], 1), fill="black")
226
-		
227
-		# collage	
228
-		im4.paste(im5, (0,pos,im1.size[0],pos+im1.size[1]/20))
229
-
230
-	# HAACHEUUR
231
-	for j in range(len(randomCoupeHauteur)-1):
232
-		Hacheur(randomCoupeHauteur[j], randomCoupeHauteur[j+1])
238
+''' OPTIONS '''	
239
+def TrancheHorizontale() :
240
+	# tirage au hasard de la bande copiee
241
+	pos = random.randint(0, im1.size[1]-im1.size[1]/20)
242
+	# copiage
243
+	im5 = im2.crop((0,pos,im1.size[0],pos+im1.size[1]/20))
233 244
 	
234
-	''' SAUVEGARDE '''
235
-	# CTRL + S
236
-	#chemin du script	: scriptpy = sys.argv[0]
237
-	#chemin de l'image	: str(sys.argv[1])
238
-	scriptpy = str(sys.argv[1])
239
-	script = scriptpy[:-3]
240
-	n = "%05d" % i
241
-	im4.save(script+"."+n+"_"+strftime("%Y%m%d-%Hh%Mm%Ss", gmtime())+".png",'PNG', quality=100)
242
-	pickle.dump(seq, open(script+"."+n+"_"+strftime("%Y%m%d-%Hh%Mm%Ss", gmtime())+".pickle","w"))
245
+	# le soulignage en blanc
246
+	draw = ImageDraw.Draw(im5)
247
+	draw.line((0, im5.size[1]-1, im5.size[0], im5.size[1]-1), fill="black")
248
+	draw.line((0, 1, im5.size[0], 1), fill="black")
243 249
 	
244
-	#print script+"."+str(i)+"_"+strftime("%Y%m%d-%Hh%Mm%Ss", gmtime())+".jpg"
245
-	#millis = int(round(time.time() * 1000))
246
-	#print "millis-secondes : "+str(millis)
250
+	# collage	
251
+	im4.paste(im5, (0,pos,im1.size[0],pos+im1.size[1]/20))
252
+
253
+# HAACHEUUR
254
+for j in range(len(randomCoupeHauteur)-1):
255
+	Hacheur(randomCoupeHauteur[j], randomCoupeHauteur[j+1])
256
+
257
+''' SAUVEGARDE '''
258
+# CTRL + S
259
+#chemin du script	: scriptpy = sys.argv[0]
260
+#chemin de l'image	: str(sys.argv[1])
261
+scriptpy = str(sys.argv[1])
262
+script = scriptpy[:-3]
263
+#n = "%05d" % i
264
+n = "1.1"
265
+im4.save(script+"."+n+"_"+strftime("%Y%m%d-%Hh%Mm%Ss", gmtime())+".png",'PNG', quality=100)
266
+pickle.dump(seq, open(script+"."+n+"_"+strftime("%Y%m%d-%Hh%Mm%Ss", gmtime())+".pickle","w"))
267
+
268
+#print script+"."+str(i)+"_"+strftime("%Y%m%d-%Hh%Mm%Ss", gmtime())+".jpg"
269
+#millis = int(round(time.time() * 1000))
270
+#print "millis-secondes : "+str(millis)
247 271
 

+ 271
- 0
hacheur.py View File

@@ -0,0 +1,271 @@
1
+#!/usr/bin/python
2
+# coding: utf-8
3
+
4
+# haacheuur 0.24
5
+# port industriel de port la nouvelle - couleur - 60cm*30cm
6
+# image source : pln.jpg
7
+# image obtenue : pln..20150910-11h59m53s.jpg
8
+
9
+import sys
10
+import Image
11
+import random
12
+import os
13
+import ImageDraw
14
+import ImageFont
15
+import ImageFilter
16
+from time import gmtime, strftime
17
+import time
18
+
19
+# modifs du 30/10/2013
20
+import ImageEnhance
21
+
22
+'''
23
+multiples 1024	: 	1024 2048 3072 4096 5120 		6144 7168 8192 		9216 10240
24
+multiples 768 :	768 1536 2304 3072 3840 4608 5376 	6144 6912 7680 8448 9216 9984 10752 
25
+
26
+'''
27
+
28
+
29
+#rapport d'allongement de la nouvelle image par rapport à la largeur de l'image originale
30
+allongement = 2
31
+
32
+#ouvertrure de l'image source et conversion en mode couleur 1bit
33
+#im1 = Image.open(str(sys.argv[1])).convert('1')
34
+#im1 = Image.open(str(sys.argv[1])).convert('L')
35
+im1 = Image.open(str(sys.argv[1]))
36
+im2 = im1.copy()
37
+
38
+im4 = Image.new("RGBA",(im1.size[0]*allongement, im1.size[1]))
39
+im5 = Image.new("RGBA",(im1.size[0]*allongement, im1.size[1]))
40
+
41
+boutImage = Image.new("RGBA",(im1.size[0], im1.size[1]))
42
+
43
+Larg = im1.size[0]
44
+Haut = im1.size[1]
45
+import pickle
46
+
47
+loadfile = False
48
+
49
+class Sequence:
50
+	def __init__(s):
51
+		randomCoupeHauteur = []
52
+		s.randomCopyPosi =[]
53
+		s.proportions=[]
54
+		s.choix=[]
55
+		s.sizeOutput=None
56
+		s.sizeInput=None
57
+
58
+"""
59
+seq = dict()
60
+seq["randomCoupeHauteur"] = []
61
+seq["randomCopyPosi"] = [] 
62
+seq["proportions"] = []
63
+seq["choix"] = []
64
+seq["sizeOutput"]= im4.size
65
+seq["sizeInput"] = im1.size
66
+"""
67
+if loadfile:
68
+	seq=pickle.load(open("test.pickle"))
69
+
70
+else :
71
+	seq=Sequence()
72
+	
73
+'''
74
+for i in range(1):
75
+'''
76
+	
77
+		
78
+# constitution de la liste des tranches horizontales
79
+# genre comme si qu'on avait un 16 pistes :)
80
+# nombre aleatoire compris dans les limites de l'image
81
+def randHaut():
82
+	return random.randint(0, im1.size[1]/32)*32
83
+
84
+if loadfile:
85
+	randomCoupeHauteur = seq.randomCoupeHauteur
86
+	
87
+else:
88
+	randomCoupeHauteur = [0, \
89
+	randHaut(),randHaut(),randHaut(),randHaut(), \
90
+	randHaut(),randHaut(),randHaut(),randHaut(), \
91
+	randHaut(),randHaut(),randHaut(),randHaut(), \
92
+	randHaut(),randHaut(),randHaut(),randHaut(), \
93
+	randHaut(),randHaut(),randHaut(),randHaut(), \
94
+	randHaut(),randHaut(),randHaut(),randHaut(), \
95
+	randHaut(),randHaut(),randHaut(),randHaut(), \
96
+	randHaut(),randHaut(),randHaut(),randHaut(), \
97
+	im1.size[1]]
98
+	# rangement des valeurs des plus petites au plus grandes
99
+	randomCoupeHauteur.sort()
100
+	seq.randomCoupeHauteur = randomCoupeHauteur
101
+	
102
+# les hachures
103
+def Hacheur(haut, bas) :
104
+	
105
+	n=0
106
+	i=0
107
+	#!!!!!!!!!!
108
+	while n<im4.size[0] :
109
+		
110
+		if loadfile:
111
+			proportions = seq.proportions
112
+			choix_rnd = seq.choix[i]
113
+			randomCopyPosi = seq.randomCopyPosi[i]
114
+		else:
115
+			'''
116
+			8 16 24 32 40 48 56 64 72 80 88 96 104 112 120 128 136 144 152 160 168
117
+			'''
118
+			#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)]
119
+			#proportions = [(2560,1),(1280,2),(1280,1),(640,2),(640,1),(320,4),(320,2),(160,6),(160,2),(120,4),(120,8),(120,1),(80,16),(80,4),(64,16),(64,8),(64,1),(24,32),(24,16),(16,32),(16,16),(16,8),(16,2),(16,1),(8,24),(8,16),(8,8),(8,4),(8,2),(8,1)]
120
+			#proportions = [(2560,1),(1280,2),(1280,1),(640,2),(640,1),(320,4),(320,2),(160,6),(160,2),(120,4),(120,8),(120,1),(80,16),(80,4),(64,16),(64,8),(64,1),(32,1),(32,2),(32,4),(32,8),(32,32),(16,1),(16,2),(16,4),(16,16),(16,32)]
121
+			#proportions = [(2560,1),(1280,2),(1280,1),(640,2),(640,1),(320,4),(320,2),(160,6),(160,2),(120,4),(120,8),(120,1),(80,16),(80,4),(64,16),(64,8),(64,1),(32,1),(32,2),(32,4),(32,8),(32,32),(16,1),(16,2),(16,4),(16,16),(16,32)]
122
+			proportions = [	(16,2),(16,4),(16,8),(16,16),(16,32),\
123
+							(32,8),(32,16),(32,32),\
124
+							(64,4),(64,8),(64,16),\
125
+							(128,2),(128,4),(128,8),\
126
+							(256,1),(256,2),(256,4),\
127
+							(512,1),(512,2),\
128
+							(1024,1),(1024,2),\
129
+							(2048,1)]
130
+			
131
+			
132
+			'''
133
+			proportions = [	(768,2),\
134
+							(512,4),\
135
+							(256,8),\
136
+							(128,4),(128,16),\
137
+							(64,4),(64,8),(64,16),\
138
+							(32,8),(32,16),(32,32),(32,32),(32,64),(32,128),\
139
+							(16,1),(16,4),(16,16),(16,64)]
140
+			'''
141
+							
142
+			'''
143
+			1,2,4,8,16,32,64,128,256,512,1024
144
+			'''
145
+			
146
+			seq.proportions = proportions
147
+			#proportions = seq.proportions[]
148
+			choix_rnd = random.randint(0, len(proportions)-1)
149
+			#choix_rnd = random.randint(0, len(proportions)-1)
150
+			seq.choix.append(choix_rnd)
151
+			
152
+			largeur = proportions[choix_rnd][0]
153
+
154
+			# positionnement de la copie, aleatoirement, entre 0 et la largeur totale de l'image 
155
+			randomCopyPosi = random.randint(0, (im1.size[0]-largeur))
156
+			#randomCopyPosi = seq.randomCopyPosi
157
+			seq.randomCopyPosi.append(randomCopyPosi)
158
+		
159
+		i+=1
160
+
161
+		# tirage au sort
162
+		
163
+		#seq["choix"].append(choix_rnd)
164
+		
165
+		# assignation des valeurs (paires) finales choisies
166
+		largeur = proportions[choix_rnd][0]			
167
+		repeat = proportions[choix_rnd][1]
168
+
169
+		#seq["randomCopyPosi"].append(randomCopyPosi)
170
+		
171
+		cx1 = randomCopyPosi
172
+		cx2 = randomCopyPosi + largeur
173
+		#print "im3 = im2.crop : "+str(im3.size)
174
+			
175
+		draw = ImageDraw.Draw(im4)
176
+				
177
+		loop = 0
178
+		
179
+		#pixelSizeList = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,4,4,8]
180
+		pixelSizeList = [1,1,1,1,1,1,1,1,1,1,2,2,4,8,16]
181
+		pixelSizeIndex = random.randint(0,len(pixelSizeList)-1)
182
+		pixelSize = pixelSizeList[pixelSizeIndex]
183
+		
184
+		#print " pixelSize = "+str(pixelSize)
185
+		
186
+		
187
+		cropfinal = [largeur,bas-haut]
188
+		hauteur = bas-haut
189
+		
190
+		'''
191
+		haut gauche(0,0).
192
+		haut droit (largeur-1 , 0).
193
+		bas gauche (0 , hauteur-1).
194
+		bas droit (largeur-1, hauteur-1)
195
+		'''
196
+		
197
+		if largeur % pixelSize != 0:
198
+			croop = largeur / pixelSize
199
+			largeur = (int(croop) + 1 ) * pixelSize
200
+			
201
+		if  hauteur % pixelSize != 0:
202
+			croop2 = hauteur / pixelSize
203
+			hauteur = (int(croop2) + 1 ) * pixelSize
204
+		
205
+		# decoupage du sample
206
+		im5 = im2.crop((randomCopyPosi,haut,randomCopyPosi+largeur,haut+hauteur))
207
+		im3 = im2.crop((cx1,haut,cx2,bas))
208
+		
209
+		''' COLLAGE DU SAMPLE
210
+		'''
211
+		
212
+		#boutImage = im3
213
+		#im3 = Image.new("RGBA",(im1.size[0], im1.size[1]))
214
+		
215
+		''' PIXELISATION '''
216
+		if pixelSize > 1 :
217
+			im5 = im5.resize((im3.size[0]/pixelSize, im3.size[1]/pixelSize), Image.NEAREST)
218
+			im5 = im5.resize((im3.size[0]*pixelSize, im3.size[1]*pixelSize), Image.NEAREST)
219
+		
220
+		im3 = im5.crop((0,0,cropfinal[0],cropfinal[1]))
221
+		
222
+		while loop<repeat:
223
+			px1 = n
224
+			px2 = n + largeur	
225
+			#lignes colorées de 1 pix
226
+			#draw = ImageDraw.Draw(boutImage)
227
+			#draw.line((0,0,0,4), fill="rgb(128,128,128)")
228
+			
229
+			draw = ImageDraw.Draw(im3)
230
+			draw.line((0, 0, largeur-1, 0), fill="rgb(255,255,255)")
231
+			draw.line((largeur-1, 0, largeur-1, bas-haut), fill="rgb(255,255,255)")
232
+			
233
+			im4.paste(im3, (px1, haut, px2, bas))
234
+			
235
+			n = n + largeur
236
+			loop = loop + 1
237
+
238
+''' OPTIONS '''	
239
+def TrancheHorizontale() :
240
+	# tirage au hasard de la bande copiee
241
+	pos = random.randint(0, im1.size[1]-im1.size[1]/20)
242
+	# copiage
243
+	im5 = im2.crop((0,pos,im1.size[0],pos+im1.size[1]/20))
244
+	
245
+	# le soulignage en blanc
246
+	draw = ImageDraw.Draw(im5)
247
+	draw.line((0, im5.size[1]-1, im5.size[0], im5.size[1]-1), fill="black")
248
+	draw.line((0, 1, im5.size[0], 1), fill="black")
249
+	
250
+	# collage	
251
+	im4.paste(im5, (0,pos,im1.size[0],pos+im1.size[1]/20))
252
+
253
+# HAACHEUUR
254
+for j in range(len(randomCoupeHauteur)-1):
255
+	Hacheur(randomCoupeHauteur[j], randomCoupeHauteur[j+1])
256
+
257
+''' SAUVEGARDE '''
258
+# CTRL + S
259
+#chemin du script	: scriptpy = sys.argv[0]
260
+#chemin de l'image	: str(sys.argv[1])
261
+scriptpy = str(sys.argv[1])
262
+script = scriptpy[:-3]
263
+#n = "%05d" % i
264
+n = "1.1"
265
+im4.save(script+"."+n+"_"+strftime("%Y%m%d-%Hh%Mm%Ss", gmtime())+".png",'PNG', quality=100)
266
+pickle.dump(seq, open(script+"."+n+"_"+strftime("%Y%m%d-%Hh%Mm%Ss", gmtime())+".pickle","w"))
267
+
268
+#print script+"."+str(i)+"_"+strftime("%Y%m%d-%Hh%Mm%Ss", gmtime())+".jpg"
269
+#millis = int(round(time.time() * 1000))
270
+#print "millis-secondes : "+str(millis)
271
+

+ 4494
- 10484
test.pickle
File diff suppressed because it is too large
View File


Loading…
Cancel
Save