Browse Source

premier commit

rep 5 years ago
commit
82adff411e
11 changed files with 373 additions and 0 deletions
  1. 1
    0
      .gitignore
  2. 17
    0
      HH_.py
  3. BIN
      HH_.tar.gz
  4. 8
    0
      HH_1.sh
  5. 23
    0
      HH_2.sh
  6. 0
    0
      README.md
  7. 34
    0
      enscribe_.sh
  8. 51
    0
      gris1.py
  9. 170
    0
      hacheuur.py
  10. 69
    0
      horizontal.simple.py
  11. BIN
      test.jpg2015-09-29-21h22m05s.jpg

+ 1
- 0
.gitignore View File

@@ -0,0 +1 @@
1
+pylone3

+ 17
- 0
HH_.py View File

@@ -0,0 +1,17 @@
1
+(a) chargement_IMAGE
2
+	(1) mise à l échelle
3
+	(2) passage à 1 bit (noir|blanc)
4
+	(3) si nécessaire, conversion de format en non compressé (raw)
5
+
6
+(b) haacheuurr
7
+	(1) plusieurs mode pour les traites de coupes :
8
+		- tout le tour
9
+		- juste les bords droit/gauche (plus épais si sample plus grand ?)
10
+		- aucun contour
11
+		- couleur blanche|noire
12
+
13
+(c) horizontal_IMAGE
14
+	(1) largeur Image (en pixels) / FPS = temps de diffusion
15
+
16
+(d) horizontal_AUDIO
17
+	(1) calcul de la FTT inverse en fonction de la hauteur de l image

BIN
HH_.tar.gz View File


+ 8
- 0
HH_1.sh View File

@@ -0,0 +1,8 @@
1
+# ------------- FILE INFO OUTPUT
2
+echo $1
3
+
4
+# ------------- RESIZE IMAGE (512, 1024, 2048, 4096 pixels de haut)
5
+#convert $1 -resize 768x512 $1.768x512
6
+
7
+# ------------- HACHAGE
8
+python ./hacheuur.py $1

+ 23
- 0
HH_2.sh View File

@@ -0,0 +1,23 @@
1
+# ------------- FILE INFO OUTPUT
2
+echo $1
3
+
4
+# ------------- ROTATE IMAGE 90 DEGRES SENS HORAIRE
5
+convert -rotate 90 $1 $1.rotate
6
+
7
+# ------------- ENSCRIBE 
8
+# 1536 pixels / 25 fps = 61 secondes (durée fichier audio)
9
+# enscribe -ts=1 -hf=20 -mask /usr/local/share/horizontal/sounds/piano-major7.flac -length=61.0 _MG_8817.out.2colors.tiff _MG_8817.out.2colors.tiff.wav
10
+#enscribe -ts=0 -length=30.72 $1.rotate $1.enscribe.wav
11
+enscribe -ts=0 -length=82 -hf=40 $1.rotate $1.enscribe.wav
12
+
13
+# ------------- NORMALIZE AUDIO
14
+sox --norm $1.enscribe.wav $1.enscribe.norm.wav
15
+
16
+echo '-- END NORM --'
17
+
18
+# ------------- HORIZONTAL
19
+python ./horizontal.simple.py $1
20
+
21
+#NETTOYAGE
22
+rm $1.rotate
23
+rm $1.enscribe.wav

+ 0
- 0
README.md View File


+ 34
- 0
enscribe_.sh View File

@@ -0,0 +1,34 @@
1
+# ------------- FILE INFO OUTPUT
2
+
3
+file = $1
4
+echo 'file : '+file
5
+
6
+# ------------- RESIZE IMAGE (512, 1024, 2048, 4096 pixels de haut)
7
+# donc de 5184*3456 pix à 1536*1024 pix par exemple
8
+#convert $image_input -resize 768x512 $image_output_resize
9
+
10
+# ------------- HACHAGE
11
+#python ~/Projets/haacheur/hacheuur.py $image_output_resize
12
+
13
+# ------------- HORIZONTAL
14
+
15
+
16
+# ------------- ROTATE IMAGE 90 DEGRES SENS HORAIRE
17
+#convert -rotate 90 $image_input $image_output
18
+
19
+
20
+# ------------- ENSCRIBE 
21
+# 1536 pixels / 25 fps = 61 secondes (durée fichier audio)
22
+# enscribe -ts 1024 -hf 20 -o output.wav input.wav -mask /usr/local/share/horizontal/sounds/piano_7.flac -lenght $tailleImage/$fps
23
+# enscribe -ts=1 -hf=20 -mask /usr/local/share/horizontal/sounds/piano-major7.flac -length=61.0 _MG_8817.out.2colors.tiff _MG_8817.out.2colors.tiff.wav
24
+
25
+
26
+# enscribe retenu : sans mask, avec du hissing : -h, largeur image : 1024 -ts=1, sur une png 2 couleurs 
27
+#enscribe -ts=0 -length=30.72 image_input.jpg sound_output.enscribe.wav
28
+
29
+#enscribe -ts=1 -h -length=61.0 -mask /usr/local/share/horizontal/sounds/alto-majormode.flac _MG_8817.out.2colors.png _MG_8817.out.2colors.png.61s.alto-majormode.wav
30
+
31
+
32
+# ------------- NORMALIZE ENSCRIBE AUDIO OUTPUT
33
+# normaliser l'audio, histoire d'avoir une amplitude (volume) optimale 
34
+#sox --norm sound_output.enscribe.wav sound_output.wav

+ 51
- 0
gris1.py View File

@@ -0,0 +1,51 @@
1
+#!/usr/bin/python
2
+# -*- coding: utf-8 -*- 
3
+import sys
4
+import Image
5
+import random
6
+import os
7
+import ImageDraw
8
+import ImageFont
9
+import ImageFilter
10
+from time import gmtime, strftime
11
+# modifs du 30/10/2013
12
+import ImageEnhance
13
+
14
+im1 = Image.open(str(sys.argv[1]))
15
+im1 = im1.convert('RGB')
16
+
17
+# BLUR
18
+'''for i in range(40):
19
+    im1 = im1.filter(ImageFilter.BLUR)
20
+'''
21
+
22
+#operation 'degoulinage', pixel par pixel
23
+imagesource = im1
24
+imagedest = im1
25
+for i in range (60000) :
26
+	posrandX = random.randint(1, imagesource.size[0]-1)
27
+	posrandY = random.randint(1, imagesource.size[1]-55)
28
+	pixelRGB = imagesource.getpixel((posrandX,posrandY))
29
+	
30
+	for Y in range (1, 49) :
31
+		imagedest.putpixel((posrandX, posrandY + random.randint(1,Y)+5), pixelRGB)
32
+		
33
+imagedest.save("test.jpg"+strftime("%Y-%m-%d-%Hh%Mm%Ss", gmtime())+".jpg",quality=100)
34
+
35
+'''
36
+#collage de l'image résultante dans une image 1bit
37
+im4 = Image.new("1", (im1.size[0], im1.size[1]))
38
+im4.paste(im1, (0, 0, im1.size[0], im1.size[1]))
39
+
40
+# CTRL + S
41
+im4.save("griis-out-"+strftime("%Y-%m-%d-%Hh%Mm%Ss", gmtime())+".jpg",quality=100)
42
+'''
43
+
44
+#COPIER/COLLAGE SIMPLE ET EFFICACE :
45
+'''
46
+box = (30, 30, 110, 110)
47
+sample = image.crop(box)
48
+for i in range(10):  # with the BLUR filter, you can blur a few times to get the effect you're seeking
49
+    sample = sample.filter(ImageFilter.BLUR)
50
+image.paste(sample, box)
51
+'''

+ 170
- 0
hacheuur.py View File

@@ -0,0 +1,170 @@
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 rendue : pln..20150910-11h59m53s.jpg
8
+
9
+
10
+import sys
11
+import Image
12
+import random
13
+import os
14
+import ImageDraw
15
+import ImageFont
16
+import ImageFilter
17
+
18
+from time import gmtime, strftime
19
+import time
20
+
21
+# modifs du 30/10/2013
22
+import ImageEnhance
23
+
24
+#ouvertrure de l'image source et conversion en mode 1bit
25
+im1 = Image.open(str(sys.argv[1])).convert('1')
26
+#im1 = Image.open(str(sys.argv[1]))
27
+im2 = im1.copy()
28
+#im3 = Image.new("1", (im1.size[0], im1.size[1]))
29
+#im4 = Image.new("1", (im1.size[0]*3, im1.size[1]))
30
+
31
+#rapport d'allongement de la nouvelle image par rapport à la largeur de l'image originale
32
+allongement = 1
33
+
34
+im3 = Image.new("RGBA",(im1.size[0], im1.size[1]))
35
+im4 = Image.new("RGBA",(im1.size[0]*allongement, im1.size[1]))
36
+
37
+Larg = im1.size[0]
38
+Haut = im1.size[1]
39
+
40
+for i in range(10):
41
+	
42
+	# nombre aleatoire compris dans les limites de l'image
43
+	def randHaut(): return random.randint(0, im1.size[1])
44
+		
45
+	# constitution de la liste des tranches horizontales
46
+	# genre comme si qu'on avait un 16 pistes :)
47
+	randomCoupeHauteur = [0, \
48
+	randHaut(),randHaut(),randHaut(),randHaut(),randHaut(), \
49
+	randHaut(),randHaut(),randHaut(),randHaut(),randHaut(), \
50
+	randHaut(),randHaut(),randHaut(),randHaut(),randHaut(), \
51
+	randHaut(),randHaut(),randHaut(),randHaut(),randHaut(), \
52
+	randHaut(),randHaut(),randHaut(),randHaut(),randHaut(), \
53
+	im1.size[1]]
54
+
55
+	# rangement des valeurs des plus petites au plus grandes
56
+	randomCoupeHauteur.sort()
57
+	
58
+	# DEBUG
59
+	liste = []
60
+
61
+	# les hachures
62
+	def Hacheur(haut, bas) :
63
+		n=0
64
+		while n<im4.size[0] :
65
+		
66
+			# constitution d'une liste de dimensions et de repetitions
67
+			#dimen FAAAAT
68
+			#randomListe = [(10240,1),(5120,1),(2560,1),(1280,2),(640,4),(320,8),(320,3),(160,12),(160,6),(120,8),(80,24),(40,16),(20,32),(20,16),(10,32),(10,16),(5,64)]
69
+			#dimen FUZITU
70
+			
71
+			#PLN back
72
+			#randomListe = [(2560,1),(1280,2),(640,4),(320,8),(320,3),(160,12),(160,6),(120,8),(80,24),(40,16),(20,24),(20,16),(10,32),(10,16),(5,64),(2,64),(1,64),(1,16)]
73
+			
74
+			#PLN recursif sept 2015
75
+			#randomListe = [(2560,1),(1280,2),(640,4),(320,8),(320,3),(160,12),(160,6),(120,8),(80,24),(40,16),(20,24),(20,16),(10,32),(10,16),(5,64)]
76
+			#randomListe = [(5120,1),(2560,1),(1280,2),(640,4),(320,8),(320,3),(160,12),(160,6),(120,8),(80,24),(40,16),(10,32),(5,64),(3,24)]
77
+			# test HH_
78
+			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)]
79
+			
80
+			#dimen BLOG CUMULONIMBUS
81
+			#randomListe = [(320,8),(320,3),(160,12),(160,6),(120,8),(80,24),(40,16),(20,32),(20,16),(10,32),(10,16),(5,64)]
82
+			# repeter ce qui suit 2 ou 3 fois pour realiser non pas
83
+			# un sample, mais carrement ue sequence
84
+# 8>< ------------------------------------------------------------------			
85
+			# tirage au sort
86
+			#randomFacteur = random.randint(0, len(randomListe)*3)
87
+			choix = 0
88
+			
89
+			# DEBUG	
90
+			#print len(randomListe)*3
91
+			
92
+			# ponderation du tirage au sort
93
+			randomFacteur = random.randint(0, len(randomListe)-1)
94
+			
95
+			# DEBUG
96
+			#liste.append(choix)
97
+			
98
+			# assignation des valeurs (paires) finales choisies
99
+			randomCopyLargFinal = randomListe[randomFacteur][0]			
100
+			repeat = randomListe[randomFacteur][1]
101
+	
102
+			# positionnement de la copie, aleatoirement, entre 0 et la largeur totale de l'image 
103
+			randomCopyPosi = random.randint(0, (im1.size[0]-randomCopyLargFinal))
104
+
105
+			cx1 = randomCopyPosi
106
+			cx2 = randomCopyPosi + randomCopyLargFinal
107
+			# decoupage du sample
108
+			im3 = im2.crop((cx1,haut,cx2,bas))
109
+# 8>< ------------------------------------------------------------------
110
+				
111
+			draw = ImageDraw.Draw(im4)		
112
+			loop = 0
113
+			
114
+			#collage, n fois, du sample
115
+			while loop<repeat:	
116
+				px1 = n
117
+				px2 = n + randomCopyLargFinal
118
+				
119
+				draw = ImageDraw.Draw(im3)
120
+				
121
+				#lignes noires 1px autour
122
+				#draw.line((0, 0, im3.size[0]-1, 0), fill="rgb(255,255,255)")
123
+				draw.line((im3.size[0]-1, 0, im3.size[0]-1, im3.size[1]-1), fill="rgb(255,255,255)")
124
+				
125
+				im4.paste(im3, (px1, haut, px2, bas))
126
+				
127
+				n = n + randomCopyLargFinal
128
+				loop = loop + 1
129
+
130
+	# les tranches horizontales intactes soulignees de blanc 				
131
+	def TrancheHorizontale() :
132
+		# tirage au hasard de la bande copiee
133
+		pos = random.randint(0, im1.size[1]-im1.size[1]/20)
134
+		# copiage
135
+		im5 = im2.crop((0,pos,im1.size[0],pos+im1.size[1]/20))
136
+		
137
+		# le soulignage en blanc
138
+		draw = ImageDraw.Draw(im5)
139
+		draw.line((0, im5.size[1]-1, im5.size[0], im5.size[1]-1), fill="black")
140
+		draw.line((0, 1, im5.size[0], 1), fill="black")
141
+		
142
+		# collage	
143
+		im4.paste(im5, (0,pos,im1.size[0],pos+im1.size[1]/20))
144
+
145
+	# HAACHEUUR
146
+	for j in range(len(randomCoupeHauteur)-1):
147
+		Hacheur(randomCoupeHauteur[j], randomCoupeHauteur[j+1])
148
+	
149
+	# DEBUG
150
+	#print liste
151
+	#print sorted(set(liste),key=liste.count)
152
+	
153
+	# CTRL + S
154
+	#chemin du script
155
+	#scriptpy = sys.argv[0]
156
+	
157
+	#chemin de l'image : str(sys.argv[1])
158
+	scriptpy = str(sys.argv[1])
159
+	
160
+	script = scriptpy[:-3]
161
+	
162
+	n = "%05d" % i
163
+	
164
+	im4.save(script+"."+n+"_"+strftime("%Y%m%d-%Hh%Mm%Ss", gmtime())+".png",'PNG', quality=100)
165
+	
166
+	#print script+"."+str(i)+"_"+strftime("%Y%m%d-%Hh%Mm%Ss", gmtime())+".jpg"
167
+	
168
+	#millis = int(round(time.time() * 1000))
169
+	#print "millis-secondes : "+str(millis)
170
+	

+ 69
- 0
horizontal.simple.py View File

@@ -0,0 +1,69 @@
1
+#!/usr/bin/python
2
+import os, sys, Image, ImageDraw, ImageColor
3
+from time import gmtime, strftime
4
+
5
+fichier=sys.argv[1]
6
+
7
+
8
+try:
9
+	#Image.open(fichier).save(outfile)
10
+	im1 = Image.open(fichier).convert('1')
11
+	im2 = im1.copy()
12
+	im3 = im1.copy()
13
+	draw = ImageDraw.Draw(im2)
14
+except IOError:
15
+	print "FICHIER!!!", infile
16
+
17
+date = strftime("%Y%m%d-%Hh%Mm%Ss", gmtime())
18
+
19
+x=0
20
+while x < im1.size[0] :
21
+	y = 0
22
+	while y < im1.size[1] :
23
+		colorpixel = im1.getpixel((x,y))
24
+		draw.line( (0, y, im2.size[0], y) , fill=colorpixel)
25
+		draw.line((x, 0, x, im2.size[1]-1), fill=1)
26
+		
27
+		y = y + 1
28
+	
29
+	#draw = ImageDraw.Draw(im2)
30
+	#lignes noires 1px autour
31
+	#draw.line((0, 0, im3.size[0]-1, 0), fill="rgb(255,255,255)")
32
+	#draw.line((x, 0, x, im2.size[1]-1), fill="rgb(255,0,0)")
33
+	
34
+#------------------------------------------
35
+	# ALPHA tout bete :
36
+	im3 = Image.blend(im1, im2, 0.8)
37
+	
38
+	# COMPOSITING :	 
39
+	# im3 = Image.composite(im1, im2, mask) 
40
+	#im3 = Image.composite(im1, im2, im1) 
41
+#------------------------------------------	
42
+	
43
+	n = "%05d" % x
44
+	nomdefichier = "horizontal"+n+".png"
45
+	im3.save(nomdefichier, "PNG")
46
+	print nomdefichier
47
+	
48
+	x = x + 1
49
+	
50
+	#im4.save(script+"."+strftime('%Y%m%d-%Hh%Mm%Ss', gmtime())+".jpg",'JPEG', quality=100)
51
+
52
+del draw
53
+
54
+#os.system("ffmpeg -i horizontal%d.png -vcodec mjpeg -q:v 0 "+fichier+".avi")
55
+
56
+os.system("ffmpeg -i horizontal%05d.png -i "+fichier+".enscribe.norm.wav -c:a libfaac -c:v libx264 -preset ultrafast -crf 32 "+fichier+".final.mp4")
57
+
58
+print " OUTPUT FINAL : "+fichier+".final.mp4"
59
+
60
+
61
+#os.system("rm horizontal*.png")
62
+
63
+
64
+# ALPHA :
65
+# out = image1 * (1.0 - alpha) + image2 * alpha
66
+		
67
+	
68
+	
69
+	

BIN
test.jpg2015-09-29-21h22m05s.jpg View File


Loading…
Cancel
Save