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 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
|
#_*_ coding: iso-8859-1 _*_
import os.path
from PIL import Image
###définition de la classe
class Photo() :
'''classe des photos et fichiers manipulés par Pymaweb'''
def __init__(self) :
'''initialisation'''
self.poids=0 #le poids en octets
self.taille=(0,0) #la taille en pixel
self.fichier,self.nom='','' #chemin complet et nom du fichier
self.photo=None #photo au sens PIL
def recupFichier(self) :
'''récupère le chemin du fichier à transformer'''
self.fichier=fichier
def recupPoids(self) :
'''récupère le poids du fichier en octets'''
self.poids=os.path.getsize(self.fichier)
def recupPhoto(self) :
'''crée un objet photo au sens PIL'''
self.photo=Image.open(self.fichier)
def recupTaille(self) :
'''récupère les pixel de la photo'''
self.taille=self.photo.size
def recupNom(self) :
'''récupère le nom du fichier'''
self.nom=os.path.basename(self.fichier)
def reduitTaille(self) :
'''calcule un taux de réduction égal à 1% des dimensions pixel x et y'''
self.taille=(self.taille[0]*0.99,self.taille[1]*0.99)
def reduitPhoto(self) :
'''réduit la photo suivant un taux défini à partir de la taille initiale'''
self.photo.resize(self.taille,Image.ANTIALIAS)
def changeFichier(self) :
'''modifie le chemin du fichier'''
self.fichier=os.path.join(out,self.nom)
def sauvePhoto(self) :
'''sauvegarde la photo dans le sous dossier web - ATTENTION : fichier est changeFichier(self) !'''
self.photo.save(self.fichier,"JPEG")
###programme principal
courant=os.getcwd()
if not os.path.isdir('web') :
os.mkdir('web')
else :
pass
out='web'
fichier='photo.jpg' #essai sur une seul photo
essai=Photo()
essai.recupFichier()
essai.recupPoids()
essai.recupPhoto()
essai.recupTaille()
essai.recupNom()
while essai.poids > 1000000 : #1 Mo est la consigne pour cet essai
essai.reduitTaille()
essai.reduitPhoto()
essai.changeFichier()
essai.sauvePhoto()
essai.recupPoids()
print "OK !" |
Partager