This repository has been archived by the owner on Jan 23, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
invertImgMultiThread.py
executable file
·50 lines (48 loc) · 1.99 KB
/
invertImgMultiThread.py
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
#! /usr/local/bin/python3
""" Nécessite un argument (le path vers le dossier ou le fichier à convertir)"""
from PIL import Image
import PIL.ImageOps
from os import walk
from multiprocessing import Pool
import os, sys
from functools import partial
import time
def process_image(elt, path, pathInv):
print("**** processing {} : ****".format(elt))
image = Image.open(path+elt)
converted_image = PIL.ImageOps.invert(image)
converted_image.save(pathInv+elt)
if __name__ == '__main__':
start = time.time()
pool=Pool(os.cpu_count())
if len(sys.argv) != 2 :
print("2 args needed")
else :
path = str(sys.argv[1])
if(not (os.path.isdir(path) or os.path.isfile(path))) :
print("L'élément {} n'existe pas \n".format(path))
else :
extention = ["JPG", "JPEG", "PNG"] #extention autorisée pour la conversion
f = [] # on a ici la liste des fichiers sur lesquels on va travailler
# si c'est un dossier, on parse tous les élements dudit dossier
if(os.path.isdir(path)) :
for(dirpath, dirnames, filenames) in walk(path) :
f.extend(filenames)
break
# si c'est un fihier on l'ajoute juste à la liste des fichiers sur lesquels on travail
if(os.path.isfile(path)) :
head, tail = os.path.split(path)
f.append(tail)
path=head+"/"
if(path[-1] != "/"):
path+="/"
pathInv = path+"positif/"
#Si pathInv n'existe pas je le crée
if( not os.path.isdir(pathInv)):
os.mkdir(pathInv)
#on fait la conversion et on enregistre notre taff
f = [elt for elt in f if any(ext in elt.upper() for ext in extention)]
#print(f)
process=partial(process_image, path=path, pathInv = pathInv)
pool.map(process,f)
print(" _____ %s seconds _____" %(time.time()-start))