begin process at 2010 07 29 16:08:34
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > ALBUMEUR PHOTO: SCRIPT DE CRÉATION D'ALBUM PHOTO EN HTML À PARTIR D'UN DOSSIER CONTENANT DES IMAGES (UTILISE PIL)

ALBUMEUR PHOTO: SCRIPT DE CRÉATION D'ALBUM PHOTO EN HTML À PARTIR D'UN DOSSIER CONTENANT DES IMAGES (UTILISE PIL)


 Information sur la source

Note :
9 / 10 - par 1 personne
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Divers Classé sous :albumeur, photos, html, pil, générateur Niveau :Initié Date de création :17/10/2006 Date de mise à jour :08/11/2006 18:16:03 Vu / téléchargé :9 153 / 255

Auteur : vychnou

Ecrire un message privé
Commentaire sur cette source (2)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Ce code est un script que j'avais réalisé pour mes besoins personnels.
En effet, je fais tourner un petit serveur apache maison, et je m'étais demandé si j'allais m'atteler à la tache de réaliser une application PHP/SQL pour gérer mes albums de photo. J'hésitais car je trouvais cela assez lourd par rapport aux besoins ponctuels que j'avais d'afficher des photos (photos de vacances de temps en temps par exemple). Et un jour, EUREKA! L'idée m'est venue : J'allais réaliser un script python qui s'occupait de tout:
Organisation:
   Des fichiers images dans un répertoire donné (pour l'instant, il ne gère que les jpeg)
Méthode:
   Le script parcourt simplement les fichiers du répertoire,
pour chaque image il crée une miniature(thumbnail) et une réduction: image un peu plus légère que les gros fichiers photos numériques qui peuvent allegrement atteindre les 5Mo l'image.
Il génère ensuite le code HTML de la page dont l'architecture principale est une <TABLE> qui affiche les photos.

Au final, on se retrouve avec le dossier de départ qui contient les images de départ + leurs miniatures + leurs réductions ainsi qu'un fichier html qui contient l'album photo.

Ce script nécessite PIL (Python Imaging Library) que vous pourrez télécharger ici gratuitement: http://www.pythonware.com/products/pil/
Cette bibliothèque contient moultes fonctionnalités de manipulation d'image, vraiment très bien pensées.

Source

  • # -*- coding: cp1252 -*-
  • """
  • Albumeur photo:
  • script python écrit par VyCHNou (vychnou@hotmail.com)
  • Transforme un répertoire contenant des photos en album photo html avec création de thumbnails et de réductions des photos.
  • """
  • import os, sys, Image, time
  • from optparse import OptionParser
  • def resize(im,x,y):
  • """retourne l'image redimensionnée(diminution) en gardant les proportions"""
  • if ((im.size[0]/x)>(im.size[1]/y)):
  • coeffResize=float(im.size[0]/float(x))
  • else:
  • coeffResize=float(im.size[1]/float(y))
  • return im.resize((int(round((im.size[0]/coeffResize))),int(round((im.size[1]/coeffResize)))))
  • def fichierOk(dir, fic):
  • """retourne True si le fichier est ok, False sinon"""
  • fic=fic.lower()
  • if (os.path.isfile(dir+os.sep+fic) and fic[len(fic)-4:len(fic)]==".jpg" and fic[0:6]!="petit_" and fic[0:6]!="moyen_"):
  • return True
  • else:
  • return False
  • listePhotos=[]
  • parser=OptionParser()
  • parser.add_option("-i", "--i", "--interactif",
  • dest="interactif", action="store_true", default=False,
  • help="lance le script en mode interactif)")
  • parser.add_option("-d", "--d", "--dossier", action="store",
  • dest="dossier", type="string",
  • help="dossier a transformer en album photo")
  • parser.add_option("--html", "--fichier_html", action="store",
  • dest="html", type="string",
  • help="nom du fichier html genere",
  • default="index.html")
  • parser.add_option("--css", "--fichier_css", action="store",
  • dest="css", type="string",
  • help="nom du fichier css utilise (pas d'option=pas de fichier css utilise)")
  • parser.add_option("-t", "--t", "--titre", action="store",
  • dest="titre", type="string",
  • help="titre de l'album",
  • default="album photo")
  • parser.add_option("-c", "--c", "--commentaire", action="store",
  • dest="commentaire", type="string",
  • help="commentaire sur l'album",
  • default="Quelques photos du dossier ")
  • parser.add_option("--nc", "--nombre_colonnes", action="store",
  • dest="nombre_colonnes", type="int",
  • help="nombre de colonnes de photos",
  • default=4)
  • parser.add_option("--lm", "--largeur_miniature", action="store",
  • dest="largeur_miniature", type="int",
  • help="largeur en pixels d'une miniature (thumbnail)",
  • default=200)
  • parser.add_option("--hm", "--hauteur_miniature", action="store",
  • dest="hauteur_miniature", type="int",
  • help="hauteur en pixels d'une miniature (thumbnail)",
  • default=200)
  • parser.add_option("--lr", "--largeur_reduction", action="store",
  • dest="largeur_reduction", type="int",
  • help="largeur en pixels d'une reduction",
  • default=800)
  • parser.add_option("--hr", "--hauteur_reduction", action="store",
  • dest="hauteur_reduction", type="int",
  • help="hauteur en pixels d'une reduction",
  • default=600)
  • parser.add_option("-q", "--q", "--qualite", action="store",
  • dest="qualite", type="int",
  • help="qualite des miniatures",
  • default=80)
  • (options, args) = parser.parse_args()
  • if (options.interactif):
  • options.dossier=raw_input("repertoire a transformer en album photo ? >>")
  • options.html=raw_input("nom du fichier html album photo ? >>")
  • options.titre=raw_input("titre de votre album ? >>")
  • options.commentaire=raw_input("commentaire sur votre album ? >>")
  • options.nombre_colonnes=int(raw_input("nombre de colonnes de photo ? >>"))
  • options.largeur_miniature=int(raw_input("largeur des miniatures ? >>"))
  • options.hauteur_miniature=int(raw_input("hauteur des miniatures ? >>"))
  • options.largeur_reduction=int(raw_input("largeur des photos allegees? >>"))
  • while (options.largeur_miniature>=options.largeur_reduction):
  • print "Miniature doit etre moins large que photo allegee"
  • options.largeur_reduction=int(raw_input("largeur des photos allegees? >>"))
  • options.hauteur_reduction=int(raw_input("hauteur des photos allegees? ? >>"))
  • while (options.hauteur_miniature>=options.hauteur_reduction):
  • print "Miniature doit etre moins haute que photo allegee"
  • options.hauteur_reduction=int(raw_input("hauteur des photos allegees? ? >>"))
  • options.qualite=int(raw_input("qualite des miniatures ?(chiffre entre 1 et 100) >>"))
  • #on liste les fichiers du répertoire
  • listePhotos=[]
  • for fichier in os.listdir(options.dossier):
  • if (fichierOk(options.dossier,fichier)):
  • listePhotos.append(fichier)
  • print str(len(listePhotos))+" images a traiter dans "+options.dossier
  • nbImages=len(listePhotos)
  • cptImage=1
  • pourtrenteage=0
  • pourtrenteagetmp=0
  • #on parcours tous les fichiers du dossier entré
  • for fichier in listePhotos:
  • #on ouvre le fichier image
  • im = Image.open(options.dossier+os.sep+fichier)
  • #on ouvre le fichier de la réduction
  • outfile=options.dossier+os.sep+"moyen_"+fichier
  • try:
  • #on met à l'échelle la réduction
  • im=resize(im,options.largeur_reduction,options.hauteur_reduction)
  • #on la sauvegarde dans le fichier dont le nom commence par moyen_
  • #en qualité maximale
  • im.save(outfile,quality=100)
  • except IOError:
  • print "cannot convert"
  • im = Image.open(options.dossier+os.sep+fichier)
  • #on ouvre le fichier de la miniature
  • outfile=options.dossier+os.sep+"petit_"+fichier
  • try:
  • #on met à l'échelle la miniature
  • im=resize(im,options.largeur_miniature,options.hauteur_miniature)
  • #on sauvegarde la miniature à la qualité voulue dans le fichier dont le
  • #nom commence par petit_ et à la qualité voulue
  • im.save(outfile,quality=options.qualite)
  • except IOError:
  • print "cannot convert"
  • #on affiche un renseignement sur la console
  • #print "{"+str(cptImage)+"/"+str(nbImages)+"} Fichier [ "+fichier+" ] traite"
  • ratio=(float)(cptImage)/nbImages
  • str="["
  • for i in range((int)(50*ratio)):
  • str=str+"#"
  • for i in range((int)(50-(50*ratio))):
  • str=str+" "
  • str=str+"]"
  • print str
  • cptImage=cptImage+1
  • #On calcule le nombre de lignes à partir du nombre de colonnes et du nombre de photos
  • nombreDeLignes=int(round(float(len(listePhotos))/float(options.nombre_colonnes)))
  • #on ajuste la derniere ligne
  • if (nombreDeLignes<(float(len(listePhotos))/float(options.nombre_colonnes))):
  • nombreDeLignes=nombreDeLignes+1
  • #On génère le début du code html
  • if (options.css!=None):
  • codecss= '''<style type="text/css" title="default" media="screen">
  • @import "'''+nomCss+'''";
  • </style>'''
  • else:
  • codecss=""
  • album_photo_html='''
  • <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/HTML4/loose.dtd">
  • <head>
  • <title>'''+options.titre+'''</title>
  • '''+codecss+'''
  • <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  • </head>
  • \n<body>
  • <h1>'''+options.titre+'''</h1>
  • '''+options.commentaire+'''
  • <table width="100%" border="0">
  • '''
  • site="http://vychnou.info/test"
  • #on va maintenant construire le tableau HTML de photos
  • #pour chaque ligne de photos à créer:
  • for i in range(nombreDeLignes):
  • j=0
  • #nouvelle ligne de la table:
  • album_photo_html=album_photo_html+' <tr>'
  • #ajout de chaque photo dans une balise img, génération des liens etc..:
  • while (j<options.nombre_colonnes and ((i*options.nombre_colonnes)+j)<len(listePhotos)):
  • album_photo_html=album_photo_html+'<td>\n <a href="moyen_'+listePhotos[(i*options.nombre_colonnes)+j]+'''">
  • <img src="petit_'''+listePhotos[(i*options.nombre_colonnes)+j]+'" alt="'+listePhotos[(i*options.nombre_colonnes)+j]+'''"/></a><br>\n
  • <a href="'''+listePhotos[(i*options.nombre_colonnes)+j]+'">'+listePhotos[(i*options.nombre_colonnes)+j]+'</a>\n </td>\n'
  • j=j+1
  • #fin de ligne de la table:
  • album_photo_html=album_photo_html+'</tr>'
  • album_photo_html=album_photo_html+'''
  • </table>
  • <i>album photo r&eacute;alis&eacute &agrave l'aide d'un script python &eacute;crit par VyCHNou (vychnou@hotmail.com)</i>
  • </body>
  • '''
  • #on ouvre le fichier dans lequel on veut le sauvegarder
  • f=open(options.dossier+os.sep+options.html,"w")
  • #on écrit dedans ce code html
  • f.write(album_photo_html)
  • f.close()
  • #on informe l'utilisateur de la fin des opérations
  • print "\n>>>Fichier [ "+options.dossier+os.sep+options.html+ "] cree\n\n>>>>>>ALBUM PHOTO CREE<<<<<<"
# -*- coding: cp1252 -*-
"""
Albumeur photo:
script python écrit par VyCHNou (vychnou@hotmail.com)
Transforme un répertoire contenant des photos en album photo html avec création de thumbnails et de réductions des photos.
"""
import os, sys, Image, time
from optparse import OptionParser
def resize(im,x,y):
	"""retourne l'image redimensionnée(diminution) en gardant les proportions"""
	if ((im.size[0]/x)>(im.size[1]/y)):
		coeffResize=float(im.size[0]/float(x))
	else:
		coeffResize=float(im.size[1]/float(y))
	return im.resize((int(round((im.size[0]/coeffResize))),int(round((im.size[1]/coeffResize)))))

def fichierOk(dir, fic):
	"""retourne True si le fichier est ok, False sinon"""
	fic=fic.lower()
	if (os.path.isfile(dir+os.sep+fic) and fic[len(fic)-4:len(fic)]==".jpg" and fic[0:6]!="petit_" and fic[0:6]!="moyen_"):
		return True
	else:
		return False

listePhotos=[]
parser=OptionParser()
parser.add_option("-i", "--i", "--interactif",
                  dest="interactif", action="store_true", default=False,
                  help="lance le script en mode interactif)")
parser.add_option("-d", "--d", "--dossier", action="store",
                  dest="dossier", type="string",
                  help="dossier a transformer en album photo")
parser.add_option("--html", "--fichier_html", action="store",
                  dest="html", type="string",
                  help="nom du fichier html genere",
                  default="index.html")
parser.add_option("--css", "--fichier_css", action="store",
                  dest="css", type="string",
                  help="nom du fichier css utilise (pas d'option=pas de fichier css utilise)")
parser.add_option("-t", "--t", "--titre", action="store",
                  dest="titre", type="string",
                  help="titre de l'album",
                  default="album photo")
parser.add_option("-c", "--c", "--commentaire", action="store",
                  dest="commentaire", type="string",
                  help="commentaire sur l'album",
                  default="Quelques photos du dossier ")
parser.add_option("--nc", "--nombre_colonnes", action="store",
                  dest="nombre_colonnes", type="int",
                  help="nombre de colonnes de photos",
                  default=4)
parser.add_option("--lm", "--largeur_miniature", action="store",
                  dest="largeur_miniature", type="int",
                  help="largeur en pixels d'une miniature (thumbnail)",
                  default=200)
parser.add_option("--hm", "--hauteur_miniature", action="store",
                  dest="hauteur_miniature", type="int",
                  help="hauteur en pixels d'une miniature (thumbnail)",
                  default=200)
parser.add_option("--lr", "--largeur_reduction", action="store",
                  dest="largeur_reduction", type="int",
                  help="largeur en pixels d'une reduction",
                  default=800)
parser.add_option("--hr", "--hauteur_reduction", action="store",
                  dest="hauteur_reduction", type="int",
                  help="hauteur en pixels d'une reduction",
                  default=600)
parser.add_option("-q", "--q", "--qualite", action="store",
                  dest="qualite", type="int",
                  help="qualite des miniatures",
                  default=80)
(options, args) = parser.parse_args()
if (options.interactif):
	options.dossier=raw_input("repertoire a transformer en album photo ? >>")
	options.html=raw_input("nom du fichier html album photo ? >>")
	options.titre=raw_input("titre de votre album ? >>")
	options.commentaire=raw_input("commentaire sur votre album ? >>")
	options.nombre_colonnes=int(raw_input("nombre de colonnes de photo ? >>"))
	options.largeur_miniature=int(raw_input("largeur des miniatures ? >>"))
 	options.hauteur_miniature=int(raw_input("hauteur des miniatures ? >>"))
	options.largeur_reduction=int(raw_input("largeur des photos allegees? >>"))
	while (options.largeur_miniature>=options.largeur_reduction):
		print "Miniature doit etre moins large que photo allegee"
		options.largeur_reduction=int(raw_input("largeur des photos allegees? >>"))
	options.hauteur_reduction=int(raw_input("hauteur des photos allegees? ? >>"))
	while (options.hauteur_miniature>=options.hauteur_reduction):
		print "Miniature doit etre moins haute que photo allegee"
	options.hauteur_reduction=int(raw_input("hauteur des photos allegees? ? >>"))
	options.qualite=int(raw_input("qualite des miniatures ?(chiffre entre 1 et 100) >>"))
#on liste les fichiers du répertoire
listePhotos=[]
for fichier in os.listdir(options.dossier):
	if (fichierOk(options.dossier,fichier)):
		listePhotos.append(fichier)
print str(len(listePhotos))+" images a traiter dans "+options.dossier
nbImages=len(listePhotos)
cptImage=1
pourtrenteage=0
pourtrenteagetmp=0
#on parcours tous les fichiers du dossier entré
for fichier in listePhotos:
        #on ouvre le fichier image
	im = Image.open(options.dossier+os.sep+fichier)
	#on ouvre le fichier de la réduction
	outfile=options.dossier+os.sep+"moyen_"+fichier
	try:
                #on met à l'échelle la réduction
		im=resize(im,options.largeur_reduction,options.hauteur_reduction)
		#on la sauvegarde dans le fichier dont le nom commence par moyen_
		#en qualité maximale
		im.save(outfile,quality=100)
	except IOError:
		print "cannot convert"
	im = Image.open(options.dossier+os.sep+fichier)
	#on ouvre le fichier de la miniature
	outfile=options.dossier+os.sep+"petit_"+fichier
	try:
		#on met à l'échelle la miniature
		im=resize(im,options.largeur_miniature,options.hauteur_miniature)
		#on sauvegarde la miniature à la qualité voulue dans le fichier dont le
		#nom commence par petit_ et à la qualité voulue
		im.save(outfile,quality=options.qualite)
	except IOError:
		print "cannot convert"
	#on affiche un renseignement sur la console
	#print "{"+str(cptImage)+"/"+str(nbImages)+"} Fichier [ "+fichier+" ] traite"
	ratio=(float)(cptImage)/nbImages
	str="["
	for i in range((int)(50*ratio)):
		str=str+"#"
	for i in range((int)(50-(50*ratio))):
		str=str+" "
	str=str+"]"
	print str
	cptImage=cptImage+1
#On calcule le nombre de lignes à partir du nombre de colonnes et du nombre de photos
nombreDeLignes=int(round(float(len(listePhotos))/float(options.nombre_colonnes)))
#on ajuste la derniere ligne
if (nombreDeLignes<(float(len(listePhotos))/float(options.nombre_colonnes))):
	nombreDeLignes=nombreDeLignes+1
#On génère le début du code html
if (options.css!=None):
        codecss=	'''<style type="text/css" title="default" media="screen">
                @import "'''+nomCss+'''";
                </style>'''
else:
        codecss=""
album_photo_html='''
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/HTML4/loose.dtd">
<head>
<title>'''+options.titre+'''</title>
'''+codecss+'''
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
\n<body>
<h1>'''+options.titre+'''</h1>
'''+options.commentaire+'''
<table width="100%" border="0">
'''
site="http://vychnou.info/test"
#on va maintenant construire le tableau HTML de photos
#pour chaque ligne de photos à créer:
for i in range(nombreDeLignes):
	j=0
	#nouvelle ligne de la table:
	album_photo_html=album_photo_html+'  <tr>'
        #ajout de chaque photo dans une balise img, génération des liens etc..:
	while (j<options.nombre_colonnes and ((i*options.nombre_colonnes)+j)<len(listePhotos)):
		album_photo_html=album_photo_html+'<td>\n  <a href="moyen_'+listePhotos[(i*options.nombre_colonnes)+j]+'''">
		<img src="petit_'''+listePhotos[(i*options.nombre_colonnes)+j]+'" alt="'+listePhotos[(i*options.nombre_colonnes)+j]+'''"/></a><br>\n
                <a href="'''+listePhotos[(i*options.nombre_colonnes)+j]+'">'+listePhotos[(i*options.nombre_colonnes)+j]+'</a>\n  </td>\n'
		j=j+1
	#fin de ligne de la table:
	album_photo_html=album_photo_html+'</tr>'
album_photo_html=album_photo_html+'''
</table>
<i>album photo r&eacute;alis&eacute &agrave l'aide d'un script python &eacute;crit par VyCHNou (vychnou@hotmail.com)</i>
</body>
'''
#on ouvre le fichier dans lequel on veut le sauvegarder
f=open(options.dossier+os.sep+options.html,"w")
#on écrit dedans ce code html
f.write(album_photo_html)
f.close()
#on informe l'utilisateur de la fin des opérations
print "\n>>>Fichier [ "+options.dossier+os.sep+options.html+ "] cree\n\n>>>>>>ALBUM PHOTO CREE<<<<<<"

 Conclusion

Ce script tourne simplement sur la console. Il peut marcher en mode interactif (python albumeur.py -i) et il va alors demander de renseigner divers paramètres. Il peut aussi marcher en mode passage d'arguments pour une utilisation beaucoup plus rapide. (l'option -h affichera une aide en ligne de commandes qui explique tout).

Exemple: python albumeur.py -d "c:\photos\Vacances 2005" -t "vacances en Espagne" -c "Tata Robert et toute la famille dans les environs de Valence" -nc 5 -lm 180 -hm 180 -lr 800 -hr 600 -html index.htm -css css.css
Génère un album photo à partir du dossier (-d) c:\photos\Vacances 2005 dont le titre (-t) sera vacances en Espagne, dont le commentaire (-c) sera "Tata Robert et toute la famille dans les environs de Valence", qui aura 5 colonnes (-nc), des miniatures de 180pixels de large (-lm) et de 180pixels de haut (-hm), des réductions de 800 pixels de large (-lr), 600 pixels de haut(-hr), dont le nom du fichier html de sortie sera index.htm (-html), dont le nom du fichier css(-css facultatif) sera css.css .

Pour une démonstration du résultat, allez voir: http://vychnou.info/albumeur/demo

Divers choses restent à améliorer:
-Gestions des erreurs de saisie
-Compatibilité avec plus de types d'images (très simple à faire, il suffit de se baser sur les images que PIL accepte de traiter)
-Gestion des codes spéciaux dans les fichiers HTML (ça ne doit pas être très compliqué à faire non plus)
...
N'hésitez pas à laisser des commentaires, en bien ou en mal

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

17 octobre 2006 14:38:03 :
Correction d'un bug: le script doit quitter après avoir affiché l'aide par l'option -h
17 octobre 2006 14:55:50 :
Correction: utilisation de os.sep au lieu de "\\" pour rendre le script compatible avec d'autres systèmes de fichiers
17 octobre 2006 15:10:33 :
Correction des effets pervers d'un "remplacer tout" qui avait rendu la page html générée non conforme aux recommandations W3C. Désormais, la page HTML générée sera une page HTML 4.01 Transitionnal valide.
08 novembre 2006 18:16:03 :
Gestion des arguments à l'aide d'optparse. Nettoyage du code

 Sources du même auteur

Source avec Zip Source avec une capture NOMMEUR DE PHOTOS
Source avec Zip Source avec une capture BROUILLEUR DE TEXTE
Source avec Zip Source avec une capture "ANAGRAMMEUR"

 Sources de la même categorie

Source avec Zip SCRIPT PERMETTANT DE DÉCODER LA STRUCTURE SECONDAIRE D'UNE P... par Basilio
SUPPRESSION par Rano Its
Source avec Zip RECONNAISSANCE VOCALE par brennal
CONVERTISSEUR DE TEMPÉRATURE par skizo00o
Source avec Zip Source avec une capture I.A. (DÉBUTANT) par Rano Its

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture GÉNÉRATEUR DE PASSWORD par PlugnPlay666
Source avec Zip GÉNÉRATEUR HTML POUR L'UTILISATION DE PYTHON EN CGI par Just_1
Source avec Zip FIBONACCI ITÉRATIF ET RÉCURSIF par djackows
Source avec Zip Source avec une capture COMPACTEUR D'IMAGES JPEG PAR LOT par yveslc
Source avec Zip Source avec une capture NOMMEUR DE PHOTOS par vychnou

Commentaires et avis

Commentaire de MATHIS49 le 07/01/2007 12:44:53

sympa, il suffit maintenant de créér des sous repertoires afin de créer des sous album, et la ca sera nikel

Commentaire de vychnou le 08/01/2007 10:03:01

Quelque chose du genre: dans ton dossier d'album photo, tu crées d'autres dossiers dont les noms commencent par album_ (par exemple), tous ces dossiers album_xxx sont convertis de manière récursive en albums photos et le dossier parent contient des liens vers les sous albums.
C'est à peu près comme ça que tu vois les choses?
Si c'est ça je vais m'y atteler, c'est vrai que ça pourrait être pratique!

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

comment créer un fichier HTML avec Python [ par anwaarber ] salut a tous,j'ai un probl&#232;me lors de la cr&#233;ation d'un fichier HTML avec pythonsurtout quand je fait passer des variables dans le code :def Python peut être interpreté par un navigateur comme dans html [ par rabikisa ] Est-ce possible d'interpreter python à partir d'un navigateur si on utilise une base de données gadfly?(comme les pages html quoi...)si possible comme Script Python pour html [ par aera group ] Bonjour, je uis actuelement au chapitre 17 du tutoriel de Gérard Swinnen : Apprendre à programmer avec Python (téléchargable sur http://www.cifen.ulg. html [ par MimiEtude ] slt tous le monde!!!pouvez  vous m'expliquer le sens ou bien la fonction de cette instruction?&lt;meta name="MSSmartTagsPreventParsing" content="TRUE" Problème avec draw.text du module PIL [ par MasterID ] Modifier titre page html [ par miniimoi ] Bonjour,je dois créer un proxy en python pour un projet et il faut que je recupere le titre de la page html et le modifier.Je suis novice dans ce doma recupérer le contenu html d'1 site [ par sakusou ] salut à tous, Je dois récupérer le contenu html d'un site web à partir de l'url en python, pour faire ça, j'ai pensé à d'abord récupérer l'arborescenc probleme avec pil [ par Logindejapris ] Bonjour, Je voudrais récupérer la couleur d'un pixel sur mon bureau. A priori il n'y as pas d'autre possibilité que de faire un snapshoot et d'analy PIL, erreur lors de l'ouverture d'une image :/ [ par rezuz ] bonjour, j'utilise la bibliothèque PIL pour modifier des images, notament la taille. mais lorsque je lance le script et avant d'afficher les images,


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Juillet 2010
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,624 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales