DIAPORAMA AVEC AJOUT ET REDIMENSIONEMENT DE PHOTOS, CRÉATION DE COINS ARRONDIS E

crazygogo Messages postés 135 Date d'inscription samedi 18 janvier 2003 Statut Membre Dernière intervention 17 avril 2009 - 25 nov. 2009 à 09:55
 Stephipad - 4 avril 2013 à 00:34
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/50892-diaporama-avec-ajout-et-redimensionement-de-photos-creation-de-coins-arrondis-en-php-et-affichage-en-javascript

Bonjour j.ai bien aimé ce srcipt. ily a t.ileu depuis 20 10 une maj?
Je suis assez novice en jquery et php mais je n'arrive pas a faire disparaitre les boutons avance et recule de la photo lorsque je clic dessus. Merci de m.aidr sur ce point.

stepj
cs_juvaro Messages postés 4 Date d'inscription samedi 7 mars 2009 Statut Membre Dernière intervention 24 mars 2010
24 mars 2010 à 00:07
alors là je ne sais pas quoi dire =)
j'arrivais à la fin du temps imparti pour mon projet web et je n'avais pas le temps de développer une api similaire en flash et php... et là je tombe sur ce post... excellent! beau travail pour un autodidacte ;) j'y ai apporté quelques modifs pour le moment pour l'intégrer et tout à l'air de marcher. Je vous informerais dans le cas ou je rencontrerais des erreurs ou des possibilités d'améliorations éventuelles ;)
Merci beaucoup
cs_lanner Messages postés 131 Date d'inscription samedi 16 avril 2005 Statut Membre Dernière intervention 8 avril 2015
17 mars 2010 à 18:45
J'avais signalé que l'archive ne fonctionne pas si on l'utilise comme elle est proposée :)
fedebul Messages postés 129 Date d'inscription vendredi 17 mars 2006 Statut Membre Dernière intervention 27 février 2012
17 mars 2010 à 17:26
bonjour et merci Giloum !
c'est fait ! tu as raison c'est le plus simple à faire...

A+
laurent
mypiuce Messages postés 1 Date d'inscription mardi 28 juillet 2009 Statut Membre Dernière intervention 17 mars 2010
17 mars 2010 à 12:34
Bonjour Giloum !
j'admire ton boulot!!! je n'y connais rien en php mais je cherche désespérément depuis plus de 6 mois comment créer des diaporamas modifiables par n'importe qui et ton code me semble être la solution. seulement voilà, j'ai tout essayé et ca ne marche pas... j'ai lu tous les messages ci dessus échangés sur ce code et je ne comprends pas pourquoi ca ne marche pas...
Pourrais tu simplement envoyer un dossier complet, avec la page html qui appelle le diaporama en plus des fichiers php et js... Merci!!!
giloum Messages postés 17 Date d'inscription dimanche 30 septembre 2007 Statut Membre Dernière intervention 26 février 2009
12 mars 2010 à 21:01
SALUT Fedebul, tu peux essayer de mettre les paramètres de hauteur largeur des miniatures a 0, comme ceci:

// Hauteur maxi des miniatures de la galerie
define("GALLERY_THUMB_MAX_HEIGHT", "0");

// Largeur maxi des miniatures de la galerie
define("GALLERY_THUMB_MAX_WIDTH", "0");

Pour moi ça fonctionne très bien, comme sur ce site:
http://www.canyoning-gorgesdutarn.com

En espérant avoir pu t'aider.
Giloum.

PS: Lanner, je ferait la modif des includes quand j'aurais le temps ... Merci de me l'avoir signaler.
cs_lanner Messages postés 131 Date d'inscription samedi 16 avril 2005 Statut Membre Dernière intervention 8 avril 2015
12 mars 2010 à 12:59
Resalut

Juste pour dire à premier test que l'archive doit vraiment être revu, les dossiers sont mal placés (celui de javascript n'existe pas) donc les appel des js ne sont pas bon (tout ce qui est dans le head avec ../..)
Forcement au premier test rien ne va :)
Voilou je vais faire le ménage et refaire un test :)
fedebul Messages postés 129 Date d'inscription vendredi 17 mars 2006 Statut Membre Dernière intervention 27 février 2012
12 mars 2010 à 09:56
bonjour à tous !
il est super le diaporama, je l'ai un peu arrangé...
Mais j'ai une petite question, je voudrais que les petites vignettes ne s'affichent pas en dessous ! J'en ai pas besoin
vu que le diaporama fonctionne très bien à lui tout seul, ça fait doublon !!
Je n'y arrive pas, quand je vire à la ligne 411 : thumb: '".$dossier_destination."/miniature/".$contenu_dossier_photo[$i]."'

Il ne m'affiche plus du tout les images !
avez vous une idée ??
merci beaucoup

laurent
giloum Messages postés 17 Date d'inscription dimanche 30 septembre 2007 Statut Membre Dernière intervention 26 février 2009
1 févr. 2010 à 12:42
Salut Mayolphpcs, j'ai aussi ce genre d'erreur avec celeonet ... Ce n'est pas juste un problème de taille du fichier image (qui n'a rien a voir avec la largeur/hauteur mais le "poids" du fichier), c'est que le redimensionement de l'image demande plus de mémoire "vive" (je sais pas si on peut l'appeler comme ça) que ce qui t'es accordé par ton hebergeur. Pour que cela fonctionne avec un hebergement de "base" chez celeonet, il faut que ton fichier image fasse au maximum dans les 500 ko.
Bonne chance dans l'intégration de ton script !!!
mayolphpcs Messages postés 5 Date d'inscription mardi 21 novembre 2006 Statut Membre Dernière intervention 14 janvier 2013
1 févr. 2010 à 11:32
Bonjour.
Il y a un moment que je cherche un script comme celui-ci ET qui fonctionne (pour le moment, testé en local).
Super. Merci à GILOUM (et à CRAZYGOGO, pour les modifs).
C'est le premier que je trouve qui marche bien.
Famille et amis vont pouvoir s'en donner à cœur joie sur mon espace web (chez celeonet).
Je ne voudrais pas abuser, mais ne serait-il pas mieux d'être averti de la taille trop importante de l'image (Largeur ou Longueur ou les 2) après avoir choisi le fichier et avant d' " envoyer " la photo ?
Cela éviterait, je suppose, ce genre d'erreur :
------------
Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 3264 bytes) in /Volumes/masto_intel/WEB/phpcs_DIAPORAMA-AVEC-AJOUT-REDIMENSIONEMENT-PHOTOS-CREATION-COINS-ARRONDIS___Page/diaporama/diaporama.php on line 229
-------------
Je ne suis pas assez féru de php pour le faire moi-même et le faire partager aux autres, mais si l'un d'entre vous pouvez nous concocter cette modification … ???
Ce serait super.
giloum Messages postés 17 Date d'inscription dimanche 30 septembre 2007 Statut Membre Dernière intervention 26 février 2009
18 janv. 2010 à 16:11
OK, je comprenais pas du tout ce que tu voulais dire, mais maintenant c'est claire.
Merci pour l'invitation :-)
Giloum.
kdoduciel Messages postés 13 Date d'inscription lundi 9 novembre 2009 Statut Membre Dernière intervention 14 décembre 2009
18 janv. 2010 à 09:53
Comme membre club j'ai voulu chargé uniquement le script jquery-1.3.1.js en utilisant la liste qui est sous la source.
Le nom à gauche, en bleu, est bien le même que dans ta source, mais en cliquant sur la disquette pour enregistrer le fichier il s'enregistre avec le nom: diaporama_jquery-1.3.1.js
le mot "diaporama_" vient s'ajouter :-?
C'est le système du forum qui ajoute, transforme le nom comme ça... je viens de tester. Tous les fichiers JS,PHP,CSS,etc... chargés individuellement ont la même modification.
Il faut juste penser à renommer les fichiers comme dans la source ;-)
Je sais pas si c'est beaucoup plus claire? Mais une chose est sure Giloum t'y peux rien... C'est le forum...
Encore merci pour ton aide! Si un jour tu passe en valais je t'invite pour une raclette et un verre de Fendant.
giloum Messages postés 17 Date d'inscription dimanche 30 septembre 2007 Statut Membre Dernière intervention 26 février 2009
15 janv. 2010 à 18:08
Heu ??? J'ai pas compris de quoi tu parle ...
Peux tu développer ???
Merci.
kdoduciel Messages postés 13 Date d'inscription lundi 9 novembre 2009 Statut Membre Dernière intervention 14 décembre 2009
15 janv. 2010 à 09:25
!!! Attention !!!
ça c'est le chemin dans le head:
# <script type="text/javascript" src="../../javascript/jquery-1.3.1.js"></script>
# <script type="text/javascript" src="../../javascript/jquery.transition-0.2.1.pack.js"></script>

Si on charge les zips des scripts JS individuellement. Ils portent le nom !!! diaporama_jquery-1.3.1.js idem pour l'autre... J'ai cherché longtemps avant de comprendre.Pourquoi ça marchait plus...
kdoduciel Messages postés 13 Date d'inscription lundi 9 novembre 2009 Statut Membre Dernière intervention 14 décembre 2009
13 janv. 2010 à 12:34
Giloum tu étais dans le vrai, c'est bien là qu'il faut changer:

thumbs: <?php echo $nb_photos ?>, // Number of thumbnails to display

ça c'est la ligne d'origine donc le script mets toutes les images comme maximum donc les boutons n'apparaissent plus.
J'ai défini une nouvelle constante dans config et la ligne devient:

thumbs: <?php echo NB_THUMB_DISPLAY ?>, // Number of thumbnails to display

J'ai choisi 5 et ça fonctionne mais attention ce n'est pas 5 images qui apparaissent dans les miniatures, c'est un rapport qui divisent le nb d'images et créer des blocs de défilement... Pas très claire?
En gros si j'ai 15 images et que je mets 1 il faut clicker 14 fois avant que le bouton disparaisse, si je mets 5 on click 2 fois et le btn disparait, si 10 aussi 2 click, mais la répartition des blocs est différentes, faite des essais vous comprendrez ;-)
kdoduciel Messages postés 13 Date d'inscription lundi 9 novembre 2009 Statut Membre Dernière intervention 14 décembre 2009
13 janv. 2010 à 09:20
Merci Giloum je vais essayer ce que tu propose ça sembles tenir la route. Pour les droits j'ai posé la question à mon hébergeur et il me conseil de ne pas laisser les droits 777 au répertoire racine. C'est pas vraiment interdit mais ...
Alors je me suis battue avec les chemins, les dossier et les droits... mais c'est en place. Ouff!
J'ai du passer par des liens absoluts (comme la vodka) dans mes autres pages... Mais ça c'est mon manque de connaissance en php :-)
J'ai tout découpé. Les fonctions sont toutes dans ma page fonction. Sur la page diaporama il reste une peu de php (gestion de la session admin), du html mais que le strict minimum et l'appel de la fonction.
J'ai essayez de mettre en place plusieurs diaporama comme tu proposais, là si! je dis bien SI, j'y parviens c'est l'extase ;-) mais j'avoue qu'il y a un truc qui coince... Le script créer les dossiers comme prévu, si je place manuellement des images le diaporama se mets en marche, mais je ne parviens pas à enregistrer les images. Je reçois le message 'Erreur' ce message apparait quand la function afficher_suprimer_photos($dossier_destination) est exécutée et que le programme ne trouve pas les dossiers de destination...Pourtant ils existent je le promet... Encore une histoire de chemin ;-)
giloum Messages postés 17 Date d'inscription dimanche 30 septembre 2007 Statut Membre Dernière intervention 26 février 2009
10 janv. 2010 à 18:52
Salut Lanner, j'avais oublié de modifier le .zip, voila c'est fait ...
Il y a un lien pour supprimer les photos a coté de la ou elle sont affiché quand $_SESSION['admin']==true.
Il n'y a rien pour permettre a l'utilisateur de se logguer. C'est a toi de le mettre en place.
Bonne chance.

Ps: Kdoduciel, es ce que tu as réussi a régler ce problème d'affichage des flèches ??? Je n'ai pas trop de temps en ce moment, mais tu peux peut être essayer de mettre un nombre d'images moins important dans le parametrage de diapo (partie JS)
thumbs: <?php echo $nb_photos ?>, // Number of thumbnails to display => actuel
thumbs: 5, // Number of thumbnails to display => a essayé ...
cs_lanner Messages postés 131 Date d'inscription samedi 16 avril 2005 Statut Membre Dernière intervention 8 avril 2015
10 janv. 2010 à 14:45
Salut

Pourquoi la source est différente du contenu du zip ?
J'ai fait un test rapide je ne vois rien pour supprimer les photos , de même que la partie admin je ne l'ai pas compris
kdoduciel Messages postés 13 Date d'inscription lundi 9 novembre 2009 Statut Membre Dernière intervention 14 décembre 2009
9 janv. 2010 à 12:32
Les boutons c'est pas grave, mais c'est le défilement qui manque c'est pas très joli, ni pratique, j'avais déjà ce problème en local...
giloum Messages postés 17 Date d'inscription dimanche 30 septembre 2007 Statut Membre Dernière intervention 26 février 2009
9 janv. 2010 à 12:02
Salut, content que tu ai trouvé !!! J'avais oublié ce bout de code ... Sur mon hébergeur, je suis limité a 8 mega de "mémoire-vives", du coup si je garde le fichier en mémoire sans l'écrire quelque part, je dépasse cette limite lorsque je veux le redimensioner. J'ai du donc passer par cette solution ... Si tu veux tu peux la "zapper" et donc tu n'auras plus de problèmes d'autorisation d'écriture, si c'est le cas dis le moi et j'essayerai de te refaire le même code sans passer par cette étape. Après je ne pense pas qu'il y ait de gros problèmes de sécurité en donnant l'autorisation 777 a ton dossier "racine". Mais je suis loin d'être un expert en sécurité.
Pour ton problème de petite flèches, ça m'arrive aussi de temps en temps ... Je pense que c'est un bug sur le coté Javascript/css, j'ai pas trop cherché a savoir pourquoi, parce que je les ait virées de mon diaporama ...
@+, Gilles.
kdoduciel Messages postés 13 Date d'inscription lundi 9 novembre 2009 Statut Membre Dernière intervention 14 décembre 2009
9 janv. 2010 à 10:34
Eurêka!!!!!!!!

C'est presque l'extase, bon je dis presque!!! Giloum ton message sur les includes m'a mis sur la piste. La structure du site a son importance. Cela change aussi pour la création automatique des dossiers où sont stockées les images! C'est ma page index.php qui inclus diaporama === (copié - coller du code) ;-) donc à la ligne 86:

84 // On copie le fichier original dans le repertoire courant
85 // Copier d'abord le fichier permet d'economiser la memoire du serveur
86 move_uploaded_file($_FILES['fichier']['tmp_name'], $_FILES['fichier']['name']);

On cherche à écrire dans dans le répertoire httpdocs ( on dit 'racine' ? mais suis pas sure? ) si je lui donne les droits 777 le script fonctionne mais je ne sais pas si c'est dans les règles de donner autant de droit à un tel répertoire?

Un petit bug: Les boutons transparent sur la grande images apparaissent et fonctionne au survol mais je n'ai plus le défilement et les boutons dans la barre de miniature.
Merci pour la patience!
kdoduciel Messages postés 13 Date d'inscription lundi 9 novembre 2009 Statut Membre Dernière intervention 14 décembre 2009
8 janv. 2010 à 14:50
Le chemin du dossier des images stockées est le bon puisque si je place des images avec fillezilla le diaporama fonctionne, je peux aussi suprimer une images ça fonctionne, c'est vraiment au niveau de l'enregistrement d'une nouvelle image que ça coince.
giloum Messages postés 17 Date d'inscription dimanche 30 septembre 2007 Statut Membre Dernière intervention 26 février 2009
8 janv. 2010 à 13:31
Es ce que ton dossier images_diaporama est bien situé au même niveau que ta page index.php ??? si ce n'est pas le cas il faut que tu donne le chemin de ton répertoire contenant les photos lors de l'appel de la fonction:
// On appelle la fonction avec en paramètre le nom du dossier à scanner:
diaporama("images_diaporama");
ou par exemple diaporama("repertoire_ou_tu_stoke_tes_images/images_diaporama_cuisine");

Par exemple sur un site ou tu souhaite afficher plusieurs diaporama contenant des photos différentes tu peux créer un dossier principal "photos_diapo" et dans ce dossier tu peux créer plusieurs dossiers comme diapo_cuisine, diapo_escalier .
Lorsque tu appelle la fonction diaporama sur la page que tu veux, il faut juste que tu donne le chemin du dossier qui contient les photos: diaporama("photos_diapo/diapo_escalier");
kdoduciel Messages postés 13 Date d'inscription lundi 9 novembre 2009 Statut Membre Dernière intervention 14 décembre 2009
8 janv. 2010 à 13:10
erratum:la ;-) fonction te sera peut-être utile? Je ne suis pas sure de garder: "diapocuis","diapoInt","diapoIndu","diapoMeub"
/////////// voici fonction.php
<?php
//-------------- les fonctions Atypique ------------
// Fonction selection du contenu à afficher -----------------------------------
function select_contenu()
{
$liste= array("accueil","diaporama","contact","realisation","diapocuis","diapoInt","diapoIndu","diapoMeub");
$contenu=$_GET['fichier'];

if (in_array($contenu,$liste)) {
require($contenu.'.php');
}
else {
require('accueil.php');
}
}
?>
kdoduciel Messages postés 13 Date d'inscription lundi 9 novembre 2009 Statut Membre Dernière intervention 14 décembre 2009
8 janv. 2010 à 13:04
//////////////////// voici config.php

<?php
//----- pour completer l'adresse dans les liens utilisé quand on supprime ou envoie une image ligne 122 et 226 de diaporama.php
$complet_adr="fichier=diaporama";

//----- liste des contenus autorisés "diaporama" => "Réalisations",
$liste = array(
"accueil" => "Bienvenue",
"realisation" => "Réalisations",
"contact" => "Contact"

);

/*********************** PARAMETRAGE DU SCRIPT Diaporama***********************/

// Hauteur maxi des images
define("HAUTEUR_MAXI_IMAGE", "415");

// Hauteur maxi des miniatures
define("HAUTEUR_MAXI_THUMB", "50");

// Poids maxi d'un fichier
define("POIDS_FICHIER_MAX", "20000000");

// Rayon de l'arrondi d'une image
define("RAYON_ARRONDI_IMAGE", "30");

// Rayon de l'arrondi d'une miniature
define("RAYON_ARRONDI_THUMB", "10");

// Titre du diaporama
define("GALLERY_TITLE", "Diaporama");

// Démarage automatique
define("GALLERY_AUTORUN", "true");

// Temps d'affichage de chaque image
define("GALLERY_IMAGE_DISPLAY_TIME", "2000");

// Durée de la transition
define("GALLERY_IMAGE_TRANSITION_TIME", "500");

// Hauteur maxi des images de la galerie
define("GALLERY_IMAGE_MAX_HEIGHT", "415");

// Largeur maxi des images de la galerie
define("GALLERY_IMAGE_MAX_WIDTH", "600");

// Hauteur maxi des miniatures de la galerie
define("GALLERY_THUMB_MAX_HEIGHT", "50");

// Largeur maxi des miniatures de la galerie
define("GALLERY_THUMB_MAX_WIDTH", "66");

// Afficher le titre du diaporama
define("GALLERY_DISPLAY_TITLE", "true");

// Afficher le titre des images
define("GALLERY_DISPLAY_CAPTION", "true");

// Affichage en Consultation ou en Modification selon cette variable:
$_SESSION['admin']=true;

/******************* FIN DU PARAMETRAGE DU SCRIPT ********************/
?>

/////////////////////////////////////////////////////////voici: diaporama.php

<?php
// On appelle la fonction avec en paramètre le nom du dossier à scanner:
diaporama("images_diaporama");

/***********************************************************************************************************************************************************************
SCIPT PERMETTANT DE GENERER UN DIAPORAMA EN JAVASCRIPT AFFICHANT AUTOMATIQUEMENT LES PHOTOS EXTRAITES D'UN REPERTOIRE.
APRES VERIFICATION DES DROITS D'UTILISATEURS, LE SCRIPT PERMET D'UPLOADER, D'ARRONDIR LES ANGLES, DE REDIMENSIONNER, ET DE CREER UNE MINIATURE DE LA PHOTO.
***********************************************************************************************************************************************************************/

/**********************************************************************************************
Fonction permettant l'ajout d'une photo.
$dossier_destination est le dossier de destination ou les fichiers seront enregistré,
si le dossier n'existe pas, il sera crée automatiquement ainsi que le sous dossier contenant les mininiature.
Le chemin du dossier doit etre indiqué depuis la page ou l'on appelle la fonction.
Les extensions autorisées sont 'png', 'PNG', 'gif', 'GIF', 'jpg', 'JPG', 'jpeg', 'JPEG'.
$code_couleur_fond est la couleur de fond du diaporama
**********************************************************************************************/
function diaporama($dossier_destination){
// On verifie que l'utilisateur possede les droit pour administrer le script
if(isset ($_SESSION['admin']) && $_SESSION['admin']==true){
// On verifie que le dossier ou l'on veut enregistrer existe, sinon on le creér en lui donnant les droit 755
if(is_dir ($dossier_destination )==false){
//mkdir ("$dossier_destination",0755);
}

// On verifie que le dossier ou l'on veut enregistrer les miniatures existe, sinon on le creér en lui donnant les droit 755
$dossier_miniature = $dossier_destination."/miniature";
if(is_dir($dossier_miniature )==false){
//mkdir("$dossier_miniature",0755);
}

// Si l'utilisateur arrive sur cette page en voulant supprimer une photo
if(isset($_GET['supprimerphoto'])){
$_GET['supprimerphoto'] = utf8_decode($_GET['supprimerphoto']);
// On teste si les fichiers existent
if(file_exists($dossier_destination.'/'.$_GET['supprimerphoto'])){
// On suprime le fichier
unlink($dossier_destination.'/'.$_GET['supprimerphoto']);
}
if(file_exists($dossier_destination.'/miniature/'.$_GET['supprimerphoto'])){
// On suprime le fichier
unlink($dossier_destination.'/miniature/'.$_GET['supprimerphoto']);
}
}

// On teste si la variable $_FILES declare une erreur
if(isset($_FILES['fichier']['error'])){
switch ($_FILES['fichier']['error']){
case 1: // UPLOAD_ERR_INI_SIZE
echo"Le fichier dépasse la limite autorisée par le serveur (fichier php.ini) !";
break;
case 2: // UPLOAD_ERR_FORM_SIZE
echo "Le fichier dépasse la limite autorisée dans le formulaire HTML !";
break;
case 3: // UPLOAD_ERR_PARTIAL
echo "L'envoi du fichier a été interrompu pendant le transfert !";
break;
case 4: // UPLOAD_ERR_NO_FILE
echo "Le fichier que vous avez envoyé a une taille nulle !";
break;
}
}

// On teste si un fichier a eté envoyé
if(isset($_FILES['fichier'])){
// On teste si le fichier n'est pas trop gros
if($_FILES['fichier']['size'] <= POIDS_FICHIER_MAX){
// On décode le nom du fichier
$_FILES['fichier']['name'] = utf8_decode($_FILES['fichier']['name']);

// On recupere le type d'extension du fichier et on le place dans $extension_upload
$infosfichier = pathinfo($_FILES['fichier']['name']);
$extension_upload = strtolower($infosfichier['extension']);

// On donne la liste des extensions autorisées
$extensions_autorisees = array('jpg', 'jpeg', 'gif', 'png');

// On verifie si l'extension du fichier correspond a une extension autorisé
if (in_array($extension_upload, $extensions_autorisees)){
// on creer le chemin du repertoire de destination
$chemin_fichier=$complet_adr.$dossier_destination.'/';
$chemin_fichier_miniature=$dossier_miniature.'/';

// On copie le fichier original dans le repertoire courant
// Copier d'abord le fichier permet d'economiser la memoire du serveur
move_uploaded_file($_FILES['fichier']['tmp_name'], $_FILES['fichier']['name']);

// On fixe les droit sur le fichier a 0644
chmod($_FILES['fichier']['name'],0644);

// On redimensione le fichier image pour créer un fichier image png de dimension reduite
$nom_fichier_modifier = redimensionner_image($_FILES['fichier']['name'], HAUTEUR_MAXI_IMAGE, $chemin_fichier);

// On arondi les angles de l'image
//arrondir_angle($nom_fichier_modifier, RAYON_ARRONDI_IMAGE);

// On redimensione le fichier reduit pour créer une miniature
$nom_fichier_miniature = redimensionner_image($_FILES['fichier']['name'], HAUTEUR_MAXI_THUMB, $chemin_fichier_miniature);

// On arondi les angles de l'image miniature
//arrondir_angle($nom_fichier_miniature, RAYON_ARRONDI_THUMB);

// On suprime le fichier original
unlink($_FILES['fichier']['name']);

}// Fin du test de l'extension
else echo "extension non autorisée";
} // Fin du test du poid du fichier
else echo "fichier trop lourd";
}// Fin de l'isset $_FILES['fichier']
}// fin du if $_SESSION['admin']==true

afficher_diaporama($dossier_destination);

// On verifie que l'utilisateur possede les droit pour administrer le script
if(isset ($_SESSION['admin'])&&$_SESSION['admin']==true){
//---- permet de modifier le chemin des dossier, en passant un contenu valide
global $complet_adr;
// On affiche le formulaire d'envoi d'une image
?> <center>

<hr />
<form method="post" action="index.php?<?php echo $complet_adr;?>" enctype="multipart/form-data">
<fieldset style="width:340px;"><legend> Ajouter une image </legend>
" />

</fieldset>
</form>
</center><?php
// echo 'vaut:'.$complet_adr;
// Fin du formulaire

// On affiche les photos et un lien pour les suprimer
afficher_suprimer_photos($dossier_destination);
}
}

/**********************************************************************************************
FONCTION PERMETTANT DE REDIMENSIONER UNE PHOTO A UNE TAILLE VOULU
La variable $image corespond a l'image source
Les variable $hauteur et $largeur corespondent a la largeur-maxi et la hauteur-maxi voulu
La variable $masque correspond a l'image que l'on superposera a l'image de depart
La variable $chemin_fichier correspond au dossier de destination + / + nom de fichier original
**********************************************************************************************/
function redimensionner_image($image, $hauteur, $chemin_fichier){
// On recupere l'extension de l'image
$infosfichier = pathinfo($image);
$extension = strtolower($infosfichier['extension']);
switch($extension){
case "jpg" : $image_create=imagecreatefromjpeg($image); break;
case "jpeg" : $image_create=imagecreatefromjpeg($image); break;
case "gif" : $image_create=imagecreatefromgif($image); break;
case "png" : $image_create=imagecreatefrompng($image); break;
}

// on recupere la taille de l'image
$taille=getimagesize($image);
// echo "Hauteur originale de l'image: ".$taille[1]."
";
// echo "Largeur originale de l'image: ".$taille[0]."
";

// on calcule le ratio de redimentionement entre la hateur de l'image et la hauteur voulu
$ratio=$taille[1]/$hauteur;
// echo "ratio= ".$ratio."
";

// On calcule les nouvelles dimensions de l'image
$new_largeur=$taille[0]/$ratio;
$new_hauteur=$taille[1]/$ratio;
// echo "Nouvelle Hauteur de l'image: ".$new_hauteur."
";
// echo "Nouvelle Largeur de l'image: ".$new_largeur."

";

// On creer l'image de destination vide avec les nouvelles dimensions
$new_image = imagecreatetruecolor($new_largeur, $new_hauteur);

// On copie l'image uploader dans l'image vide
$copy = imagecopyresampled($new_image, $image_create, 0, 0, 0, 0, $new_largeur, $new_hauteur, $taille[0], $taille[1]);

// On remplace l'extension du fichier image par png
$nom_du_fichier_png = str_replace($infosfichier['extension'],"png",$infosfichier['basename']);

// On enregistre l'image au format png
imagepng($new_image,$chemin_fichier."/".$nom_du_fichier_png);

// On detruit l'image $new_image
imagedestroy($new_image);

// On renvoie le chemin du fichier créé
return $chemin_fichier."/".$nom_du_fichier_png;
}

/**********************************************************************************************
FONCTION PERMETTANT D'AFFICHER ET DE SUPRIMER UNE PHOTO
On scanne le dossier afin de recuperer la liste de toutes les photos
On affiche la liste des photos avec un lien permettant de suprimer la photo selectionée
**********************************************************************************************/
function afficher_suprimer_photos($dossier_destination){
global $complet_adr;
// On verifie que le dossier de destination existe
if(is_dir ($dossier_destination)==false){
echo "Dossier de destination inexistant ";
}
else{
// On ouvre le dossier ou se trouve les photos
$dossier = opendir($dossier_destination) or die('Erreur');

// On donne la liste des extensions de fichier a afficher
$extensions_autorisees = array('jpg', 'jpeg', 'gif', 'png');

echo "\r\n <center>";
// On affiche les photos contenu dans le dossier
while($resultat = readdir($dossier)){
// On teste si $resultat n'est pas un dossier ou un lien parrent
if($resultat != '.' && $resultat != '..' && !is_dir($dossier_destination."/".$resultat) ){
// Encode le nom du fichier
$resultat = utf8_encode($resultat);
// On recupere l'extension du fichier
$infosfichier = pathinfo($resultat);
$extension = strtolower($infosfichier['extension']);

// On verifie si l'extension du fichier correspond a une extension autorisé
if(in_array($extension, $extensions_autorisees)){
// Pour lisibilité du code généré:
echo "\r\n ";
// On affiche la photo avec un lien pointant sur cette meme page avec en argument $_GET le nom de la photo
echo '<hr />
[?'.$complet_adr.'& supprimerphoto='.$resultat.' Supprimer la photo: '.$resultat.']

';
// Pour lisibilité du code généré:
echo "\r\n ";
// On affiche la photo avec un lien pointant sur cette meme page avec en argument $_GET le nom de la photo
echo '

';
}
}
}
// On referme le dossier
closedir($dossier);
echo "\r\n </center>";
}// fin du else verification d'existance du dossier
}

/**********************************************************************************************
FONCTION PRINCIPALE QUI S'OCCUPE DE SCANNER LE DOSSIER ET AFFICHER LE DIAPORAMA
$dossier_destination: Le dossier à scanner pour afficher le diaporama
**********************************************************************************************/
function afficher_diaporama($dossier_destination){
// On ouvre le dossier ou se trouvent les photos
$dossier = opendir($dossier_destination) or die('Erreur');

// On donne la liste des extensions autorisées
$extensions_autorisees = array('jpg', 'jpeg', 'gif', 'png');

$contenu_dossier_photo = array();
$nom_photo = array();
// on affiche toutes les photos contenu dans le dossier
while($resultat = readdir($dossier)){
// On teste si $resultat n'est pas un dossier ou un lien parrent
if($resultat != '.' && $resultat != '..' && !is_dir($dossier_destination."/".$resultat) ){
// Encode le nom du fichier
$resultat = utf8_encode($resultat);

$fileChunks = array_reverse(explode(".", $resultat));
$extension_resultat = strtolower($fileChunks[0]);

// On verifie si l'extension du fichier correspond a une extension autorisé
if(in_array($extension_resultat, $extensions_autorisees)){
// On integre toute les photos dans un array $contenu_dossier_photo
$contenu_dossier_photo[]=$resultat;
$nom_photo[]=$fileChunks[1];
}
}
}

// On recupere l'indice du dernier enregistrement de l'array $contenu_dossier_photo
$nb_photos=count($contenu_dossier_photo);

// On genere le code javascript permettant d'afficher le diaporama
if($nb_photos > 0){
?>
<script type="text/javascript">
$(document).ready(function(){
$('#diaporama').transition({
title: '<?php echo GALLERY_TITLE ?>', // Gallery title
autoRun: <?php echo GALLERY_AUTORUN ?>, // Autorun slideshow ?
displayTime: <?php echo GALLERY_IMAGE_DISPLAY_TIME ?>, // How long an image is displayed
transitionTime: <?php echo GALLERY_IMAGE_TRANSITION_TIME ?>, // Duration of the fade in/fade out effect
width: <?php echo GALLERY_IMAGE_MAX_WIDTH ?>, // Maximum width of the gallery images
height: <?php echo GALLERY_IMAGE_MAX_HEIGHT ?>, // Maximum height of the gallery images
thumbs: <?php echo $nb_photos ?>, // Number of thumbnails to display
thumbSize: {width: <?php echo GALLERY_THUMB_MAX_WIDTH ?>, height: <?php echo GALLERY_THUMB_MAX_HEIGHT ?>}, // Size of each thumbnail
displayTitle: <?php echo GALLERY_DISPLAY_TITLE ?>, // Display the gallery title
displayCaption: <?php echo GALLERY_DISPLAY_CAPTION ?>, // Display the images caption
images : [<?php
// On affiche toute les lignes correspondant aux photos
for($i=0; $i<$nb_photos; $i++){
// Pour lisibilité du code généré:
echo "\r\n ";
// Insertion de l'image:
echo "{image: '".$dossier_destination."/".$contenu_dossier_photo[$i]."', thumb: '".$dossier_destination."/miniature/".$contenu_dossier_photo[$i]."', title: '".$nom_photo[$i]."'}";
// Pas de virgule après la dernière image:
if($i<$nb_photos-1){
echo",";
}
}
// Pour lisibilité du code généré:
echo "\r\n ";
?>]
});
});
</script>

<?php
}
}

/**********************************************************************************************
FONCTION PERMETTANT D'ARRONDIR LES ANGLES DE LA PHOTO $image
La photo doit etre au format png
On créer 4 images png correspondant au 4 angles
On superpose ces 4 images a l'image de depart
**********************************************************************************************/
function arrondir_angle($image, $rayon_arrondi){
// Cette partie peut etre activé si le fichier source n'est pas au format png
$image_create=imagecreatefrompng ($image);

// on recupere la taille de l'image
$taille=getimagesize($image);

// On determine la largeur et la hauteur de l'image contenant les coin
$largeur_coin = $rayon_arrondi/2;
$hauteur_coin = $rayon_arrondi/2;

// ********* Coin Bas Gauche ********/
// On créer une image vide nomé $image_coin de couleur $couleur_fond et de taille $rayon_arrondi
$image_coin = imagecreate($largeur_coin, $hauteur_coin);
// On attribu une couleur (noir transparent, normallement sa n'existe pas souvent) au fond
$couleur_fond_coin = imagecolorallocatealpha($image_coin, 0, 0, 0, 0);
// On attribu une couleur transparente
$couleur_transparente_coin = imagecolorallocate($image_coin, 255, 255, 255); // pour le moment la couleur est blanche
// On rend la couleur blanche transparente
imagecolortransparent($image_coin, $couleur_transparente_coin);
// On créer un cercle plein de rayon $rayon_arrondi, de position -2, -2 et de couleur $couleur_transparente_coin
imagefilledellipse($image_coin,$rayon_arrondi-$largeur_coin,0, $rayon_arrondi, $rayon_arrondi, $couleur_transparente_coin);
// On copie l'image $image_coin sur l'image principal $image
imagecopy($image_create, $image_coin, 0, $taille[1]-$largeur_coin, 0, 0, $largeur_coin, $hauteur_coin);
// On detruit l'image du coin
imagedestroy($image_coin);

// ********* Coin Bas Droit ********/
// On créer une image vide nomé $image_coin de couleur $couleur_fond et de taille $rayon_arrondi
$image_coin = imagecreate($largeur_coin, $hauteur_coin);
// On attribu une couleur (noir transparent, normallement sa n'existe pas souvent) au fond
$couleur_fond_coin = imagecolorallocatealpha($image_coin, 0, 0, 0, 0);
// On attribu une couleur transparente
$couleur_transparente_coin = imagecolorallocate($image_coin, 255, 255, 255); // pour le moment la couleur est blanche
// On rend la couleur blanche transparente
imagecolortransparent($image_coin, $couleur_transparente_coin);
// On créer un cercle plein de rayon $rayon_arrondi, de position -2, -2 et de couleur $couleur_transparente_coin
imagefilledellipse($image_coin,0,0, $rayon_arrondi, $rayon_arrondi, $couleur_transparente_coin);
// On copie l'image $image_coin sur l'image principal $image
imagecopy($image_create, $image_coin, $taille[0]-$largeur_coin, $taille[1]-$hauteur_coin, 0, 0, $largeur_coin, $hauteur_coin);
// On detruit l'image du coin
imagedestroy($image_coin);

// ********* Coin Haut Gauche ********/
// On créer une image vide nomé $image_coin de couleur $couleur_fond et de taille $rayon_arrondi
$image_coin = imagecreate($largeur_coin, $hauteur_coin);
// On attribu une couleur (noir transparent, normallement sa n'existe pas souvent) au fond
$couleur_fond_coin = imagecolorallocatealpha($image_coin, 0, 0, 0, 0);
// On attribu une couleur transparente
$couleur_transparente_coin = imagecolorallocate($image_coin, 255, 255, 255); // pour le moment la couleur est blanche
// On rend la couleur blanche transparente
imagecolortransparent($image_coin, $couleur_transparente_coin);
// On créer un cercle plein de rayon $rayon_arrondi, de position -2, -2 et de couleur $couleur_transparente_coin
imagefilledellipse($image_coin,$rayon_arrondi-$hauteur_coin,$rayon_arrondi-$largeur_coin, $rayon_arrondi, $rayon_arrondi, $couleur_transparente_coin);
// On copie l'image $image_coin sur l'image principal $image
imagecopy($image_create, $image_coin, 0, 0, 0, 0, $largeur_coin, $hauteur_coin);
// On detruit l'image du coin
imagedestroy($image_coin);

// ********* Coin Haut droit ********/
// On créer une image vide nomé $image_coin de couleur $couleur_fond et de taille $rayon_arrondi
$image_coin = imagecreate($largeur_coin, $hauteur_coin);
// On attribu une couleur (noir transparent, normallement sa n'existe pas souvent) au fond
$couleur_fond_coin = imagecolorallocatealpha($image_coin, 0, 0, 0, 0);
// On attribu une couleur transparente
$couleur_transparente_coin = imagecolorallocate($image_coin, 255, 255, 255); // pour le moment la couleur est blanche
// On rend la couleur blanche transparente
imagecolortransparent($image_coin, $couleur_transparente_coin);
// On créer un cercle plein de rayon $rayon_arrondi, de position -2, -2 et de couleur $couleur_transparente_coin
imagefilledellipse($image_coin,0,$rayon_arrondi-$largeur_coin, $rayon_arrondi, $rayon_arrondi, $couleur_transparente_coin);
// On copie l'image $image_coin sur l'image principal $image
imagecopymerge($image_create, $image_coin, $taille[0]-$largeur_coin, 0, 0, 0, $largeur_coin, $hauteur_coin,100 );
// On detruit l'image du coin
imagedestroy($image_coin);

// On rend la couleur noir transparent, transparente ...
$couleur_a_rendre_transparente = imagecolorallocatealpha($image_create, 0, 0, 0, 0);
imagecolortransparent($image_create, $couleur_a_rendre_transparente);

// On enregistre l'image png de la photo et des coins arrondis
imagepng($image_create,$image);

// On detruit l'image créer
imagedestroy($image_create);
}
?>

//////////////////////////////////////// voici index.php

<?php
session_start();
//---- index.php atypique version 2010
require("includes/config.php");
require("includes/functions.php");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<title>Ebénisterie Atypique - Au service du bois et des belles choses</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="keywords" content="atypique ,ébénisterie ,menuiserie,taravaux,rénovation,consturction en bois, bois,thomas achermann"/>
<meta name="description" content="Ebénisterie Atypique. Que ce soit dans le domaine du gros œuvre, de la restauration de meubles anciens ou de la pause de cuisines, dans chaque réalisation vous retrouverez mon amour du bois et du travail soigné "/>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="icon" type="image/png" href="images/favicon.jpg" />
<!--[if IE]><link rel="shortcut icon" type="image/x-icon" href="favicon.ico" /><![endif]-->

<link rel="stylesheet" type="text/css" href="style/style.css" />
<link href="style/diaporama.css" rel="stylesheet" type="text/css" />
<style type="text/css">
<style type="text/css">

</style>
</style>
<script type="text/javascript" src="js/jquery-1.3.1.js"></script>
<script type="text/javascript" src="js/jquery.transition-0.2.1.pack.js"></script>
</head>


<?php require("page_haut.php");?>

<?php require("page_menu.php");?>

<?php select_contenu();?>

<?php require("page_bas.php");?>

</html>

Voila dans fonction il n'y a rien qui concerne le diaporama, je n'ai pas osez le découper ;-) c'est trop nouveau pour que je me lance.
Pour le chemin je suis toujours perdue je n'arrive pas à me souvenir d'une procédure rigoureuse et souvent quand ça ne fonctionne pas je change et j'essaie jusqu'à ce que ça marche :-))
giloum Messages postés 17 Date d'inscription dimanche 30 septembre 2007 Statut Membre Dernière intervention 26 février 2009
8 janv. 2010 à 11:36
Salut, je viens de regarder ton site et effectivement cela ne fonctionne pas ... Je pense que tu as raison, c'est un problème de chemin. Es ce que tu peux poster le code de tes pages: index, et include ou se trouve les fonctions du diaporama. Je ne pense pas que de passer des variables en GET soit le problème, car lors de l'envoie du fichier ça se fait en POST. Au pire il pourrait y avoir un problème pour la suppression uniquement.
Petite info, tu sait que lorsque tu inclus un fichier, cela revient a faire un copier coller du code que tu inclus. C'est a dire que les chemins que tu donne dans la page que tu veux inclure doivent être relatif a la page dans laquelle se fait l'"inclusion" et pas par rapport a la ou se trouve la page incluse ... (j'espère que tu me suit ...) J'ai mis un moment a piger le truc ...
Bonne chance.
Gilles.
kdoduciel Messages postés 13 Date d'inscription lundi 9 novembre 2009 Statut Membre Dernière intervention 14 décembre 2009
8 janv. 2010 à 10:55
Merci Giloum de te pencher sur mon cas. J'ai exposé mon problème à mon hébergeur et il ne m'a pas signaler d'interdictions de certaine fonction.
Ce qui se confirme, si je fais un copier - coller de la source et que je mets tout dans un dossier le code fonctionne.
Sauf la création automatique des dossiers et attribution des droits, j'ai du le faire manuellement mais ça me va aussi.Après, tout fonctionne.
Tu peux le voir ici http://www.typique.info/version_0.08/diaporama/diaporama.php

Ici la version que j'ai mis à ma sauce, pour respecter la structure de mes pages. Elle fonctionne en local, mais qui ne fonctionne plus sur site: http://www.typique.info/index.php?fichier=diaporama

Si, dans cette version,je place manuellement des images dans les dossiers le diaporama fonctionne donc c'est surement une question de chemin lors de la création,redimensionement, des images mais je trouve pas. Comme tu peux le voir je passe déjà des infos par GET c'est peut-être là mon problème.
Si nécessaire je poste le code.
Pour répondre à ta question, j'en sais rien... Je suis assez novice en php et JS, httpdocs est le dossier du serveur où je place mes pages plus loin ça dépasse mes connaissances...
Merci
giloum Messages postés 17 Date d'inscription dimanche 30 septembre 2007 Statut Membre Dernière intervention 26 février 2009
7 janv. 2010 à 21:16
Salut, et bonne année a tous aussi ...
Petite question toute bête, es tu sur que ton serveur (distant) gere la fonction move_uploaded_file() ???
Tu peux essayer d'uploader tout simplement un fichier pour voir.
Par exemple chez l'hebergeur que j'utilise (celeonet) la fonction n'est pas bloqué, mais je suis limité a 2 megas par fichier envoyé.
Bonne chance et si ce n'est pas ça tiens moi au jus ....

PS: C'est quoi httpd dans /home/httpd/vhosts/typique.info/httpdocs/ ???
kdoduciel Messages postés 13 Date d'inscription lundi 9 novembre 2009 Statut Membre Dernière intervention 14 décembre 2009
7 janv. 2010 à 13:36
Bonjour et bonne année à tous!
La source est super je vous remercie tous les deux pour le merveilleux travail réalisé. C'est exactement ce que je cherchais. Bravo!
En local c'est du billard, ça marche presque tout seul ;-)
Sur le serveur c'est une autre petite chanson :-))
Si je mets tout en vrac dans un seule et unique dossier et que je désactive la création automatique des dossiers "images diaporama" et "miniature" et que je les crée manuellement en leur donnant les droits 777 ça fonctionne.
Mais je cherche à respecter la structure de toutes les pages du site.
La structure:
-une page config.php
-une page index qui inclus : require("haut_page"),require("page_menu"),require("diaporama"ou autre),require("page_bas").
- une page CSS
et en local ça marche
Sur le serveur j'obtiens ce message:
Warning: move_uploaded_file(cuisine1rdm.jpg) [function.move-uploaded-file]: failed to open stream: Permission denied in /home/httpd/vhosts/typique.info/httpdocs/diaporama.php on line 86

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpZQoows' to 'cuisine1rdm.jpg' in /home/httpd/vhosts/typique.info/httpdocs/diaporama.php on line 86

et plein d'autres erreur

Voici la ligne 86
// On copie le fichier original dans le repertoire courant
// Copier d'abord le fichier permet d'economiser la memoire du serveur
move_uploaded_file($_FILES['fichier']['tmp_name'], $_FILES['fichier']['name']);

Je précise que pour que cela fonctionne en local j'ai du ajouter dans le formulaire:
$complet_adr="fichier=diaporama";(stocké dans config.php)

<form method="POST" action="index.php?<?php echo $complet_adr;?>" enctype="multipart/form-data">

ainsi que dans le lien qui supprime les images
// On affiche la photo avec un lien pointant sur cette meme page avec en argument $_GET le nom de la photo
echo '<hr />
[?'.$complet_adr.'& supprimerphoto='.$resultat.' Supprimer la photo: '.$resultat.']

';

Les droits de diaporama.php, images_diaporama et miniature sont à 777! Il me semble que c'est une histoire de chemin mais je nage,rame, pagaie dans la semoule.
Merci d'avance de l'attention que vous porterez à ce message.
giloum Messages postés 17 Date d'inscription dimanche 30 septembre 2007 Statut Membre Dernière intervention 26 février 2009
7 déc. 2009 à 19:52
Bonjour Banditus, pour pouvoir intégrer le diaporama a une page, il faut d'abord que ta page soit au format php et que tu puisse l'exécuter sur un serveur gérant le php (en local ou en distant).
Ensuite il faut que tu enregistre les fichiers jquery-1.3.1.js et jquery.transition-0.2.1.pack.js dans un dossier situé a la racine de ton site, tu peux par exemple l'appeler js. Et le fichier diaporama."css" dans un dossier s'appelant "css" par exemple.
Il faudra indiquer le chemin de ces fichiers dans le contenu des lignes 6,31,32.
Ensuite tu peux enregistrer le contenu des fonctions (ligne 94 a ligne 525) dans un fichier s'appelant par exemple fonction_diaporama.php que tu peux enregistrer dans un dossier "fonction" (je ne te donne que des exemples de nom, tu peux les appeler comme tu veux).
Dans la page ou tu souhaite afficher le diaporama, il va falloir inclure le fichier fonction_diaporama.php et appeler la fonction diaporama() en lui donnant des "parametres". Pour t'aider un peut copie ce code:
<?php
include ('fonction/fonction_diaporama.php'); // Tu indique le chemin vers ton fichier contenant les fonctions
/*********************** PARAMETRAGE DU SCRIPT ***********************/

// Hauteur maxi des images
define("HAUTEUR_MAXI_IMAGE", "300");

// Hauteur maxi des miniatures
define("HAUTEUR_MAXI_THUMB", "50");

// Poids maxi d'un fichier
define("POIDS_FICHIER_MAX", "20000000");

// Rayon de l'arrondi d'une image
define("RAYON_ARRONDI_IMAGE", "30");

// Rayon de l'arrondi d'une miniature
define("RAYON_ARRONDI_THUMB", "10");

// Titre du diaporama
define("GALLERY_TITLE", "Diaporama");

// Démarage automatique
define("GALLERY_AUTORUN", "true");

// Temps d'affichage de chaque image
define("GALLERY_IMAGE_DISPLAY_TIME", "2000");

// Durée de la transition
define("GALLERY_IMAGE_TRANSITION_TIME", "500");

// Hauteur maxi des images de la galerie
define("GALLERY_IMAGE_MAX_HEIGHT", "300");

// Largeur maxi des images de la galerie
define("GALLERY_IMAGE_MAX_WIDTH", "400");

// Hauteur maxi des miniatures de la galerie
define("GALLERY_THUMB_MAX_HEIGHT", "50");

// Largeur maxi des miniatures de la galerie
define("GALLERY_THUMB_MAX_WIDTH", "66");

// Afficher le titre du diaporama
define("GALLERY_DISPLAY_TITLE", "true");

// Afficher le titre des images
define("GALLERY_DISPLAY_CAPTION", "true");

// Affichage en Consultation ou en Modification selon cette variable:
$_SESSION['admin']=true; // Si tu veux pouvoir avoir accès a l'upload et a la suppression des photos tu laisse cette ligne, sinon tu la remplace par $_SESSION['admin']=false;

/******************* FIN DU PARAMETRAGE DU SCRIPT ********************/

// On appelle la fonction avec en paramètre le nom du dossier à scanner:
diaporama("images_diaporama"); // tu indique ici le nom du dossier ou tu souhaite enregistrer les photos. Ce n'est pas la peine de créer le dossier toi même, le script le créera automatiquement.

?>
Il faudra aussi que dans l'en tete de ta page ou dans le fichier css de ton site tu indique ceci:
<style type="text/css">
body
{
background: white;
font-family:Arial, Helvetica, sans-serif;
}
div#container
{
text-align: left;
}
a
{
color: #385898;
font-size:14px;
font-weight:bold;
text-decoration:none;
}
legend
{
color: #385898;
font-size:12px;
}
</style>

Je pense avoir fait le tour ...
Essaye comme ça et si cela ne fonctionne pas n'hésite pas a redemander des explications ...
Bonne chance dans la création de ton site !!!
Giloum.
banditus Messages postés 2 Date d'inscription mercredi 4 novembre 2009 Statut Membre Dernière intervention 7 décembre 2009
7 déc. 2009 à 16:08
Serait ‘il possible de m’indiquer la marche à suivre pour l’intégrer.

Ps : je suis débutant, je réalise mont premier site.

Bien à vous lino
giloum Messages postés 17 Date d'inscription dimanche 30 septembre 2007 Statut Membre Dernière intervention 26 février 2009
30 nov. 2009 à 14:37
Ok, j'ai compris ...
Sinon, je viens de modifier le code d'en l'entête du post.
Et j'ai fait juste une modification a la ligne 224, en modifiant l'appel de la page diaporama.php par # (page en cour). Cela permettra d'utiliser la fonction sur n'importe quel page ...
crazygogo Messages postés 135 Date d'inscription samedi 18 janvier 2003 Statut Membre Dernière intervention 17 avril 2009
30 nov. 2009 à 13:39
désolé pour la mise en forme mais il me prend pas les tabulations !

sinon j'ai fais ça pasque je voulais que le diaporama s'affiche au dessus du formulaire
giloum Messages postés 17 Date d'inscription dimanche 30 septembre 2007 Statut Membre Dernière intervention 26 février 2009
30 nov. 2009 à 12:53
Je suis en train de relire et remettre en forme ton code, et il y a un truc que je comprend pas ... Pourquoi tu refait un deuxième test: if(isset ($_SESSION['admin'])&&$_SESSION['admin']==true){ ... avant d'afficher le formulaire d'upload.
Il ne serait pas plus simple de ne pas faire le deuxième test et d'appeler la fonction d'affichage du diapo après la fin du premier test de $_SESSION['admin']).
J'espère que tu as compris ce que j'essaye de dire ... J'ai pas trop l'habitude de communiquer avec d'autre personnes a l'écrit ...
crazygogo Messages postés 135 Date d'inscription samedi 18 janvier 2003 Statut Membre Dernière intervention 17 avril 2009
30 nov. 2009 à 11:42
oui vas-y pas de problème je poste le code ici pour que tout le monde puisse le commenter et l'améliorer...

pour la description des photos c'est vrai que pour faire simple j'ai pris le nom du fichier mais c'est pas top ! !!

:)
giloum Messages postés 17 Date d'inscription dimanche 30 septembre 2007 Statut Membre Dernière intervention 26 février 2009
30 nov. 2009 à 11:36
Salut CrasyGogo, super les améliorations que tu as faites sur le script, surtout les déclarations globales au début. Je pense jamais a faire comme ça ... Mais c'est bien plus clair a comprendre et a modifier. Je n'avais plus trop de temps ces jours derniers, mais je crois avoir trouver un diaporama en js plus sympa que celui ci (on dirait que tu as retrouvé le code original). Si ça ne te dérange pas je voudrais bien mettre le code que tu as modifier dans l'"entête" du post. Il me parait bien plus fini comme ça.
Et je posterai ensuite la modif avec la nouvelle partie en js.
J'aimerai bien pouvoir enregistrer un commentaire concernant chaque photos dans un fichier xml (plus simple dans l'utilisation q'une BDD). Mais il faut que je me documente un peu d'abord (jamais utilisé de xml encore ...)
En tout cas, beau travail de modification.
PS: Je rajouterai aussi une capture d'écran un peu plus tard.
crazygogo Messages postés 135 Date d'inscription samedi 18 janvier 2003 Statut Membre Dernière intervention 17 avril 2009
30 nov. 2009 à 10:57
j'essaye aussi de modifier le fichier jquery.transition-0.2.1.js car il aime bien que les images carrées pour la barre des miniatures.....
crazygogo Messages postés 135 Date d'inscription samedi 18 janvier 2003 Statut Membre Dernière intervention 17 avril 2009
30 nov. 2009 à 10:55
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr">
<head>
<title>Diaporama</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="diaporama.css" />
<style type="text/css">
body{
background: white;
font-family:Arial, Helvetica, sans-serif;
}
div#container{
text-align: left;
}
a{
color: #385898;
font-size:14px;
font-weight:bold;
text-decoration:none;
}
legend{
color: #385898;
font-size:12px;
}
</style>
<script type="text/javascript" src="jquery-1.2.3.pack.js"></script>
<script type="text/javascript" src="jquery.transition-0.2.1.js"></script>
</head>

<?php
/*********************** PARAMETRAGE DU SCRIPT ***********************/

// Hauteur maxi des images
define("HAUTEUR_MAXI_IMAGE", "400");

// Hauteur maxi des miniatures
define("HAUTEUR_MAXI_THUMB", "53");

// Poids maxi d'un fichier
define("POIDS_FICHIER_MAX", "20000000");

// Rayon de l'arrondi d'une image
define("RAYON_ARRONDI_IMAGE", "30");

// Rayon de l'arrondi d'une miniature
define("RAYON_ARRONDI_THUMB", "10");

// Titre du diaporama
define("GALLERY_TITLE", "Diaporama");

// Démarage automatique
define("GALLERY_AUTORUN", "true");

// Temps d'affichage de chaque image
define("GALLERY_IMAGE_DISPLAY_TIME", "1000");

// Durée de la transition
define("GALLERY_IMAGE_TRANSITION_TIME", "500");

// Hauteur maxi des images de la galerie
define("GALLERY_IMAGE_MAX_HEIGHT", "410");

// Largeur maxi des images de la galerie
define("GALLERY_IMAGE_MAX_WIDTH", "550");

// Hauteur maxi des miniatures de la galerie
define("GALLERY_THUMB_MAX_HEIGHT", "55");

// Largeur maxi des miniatures de la galerie
define("GALLERY_THUMB_MAX_WIDTH", "73");

// Afficher le titre du diaporama
define("GALLERY_DISPLAY_TITLE", "true");

// Afficher le titre des images
define("GALLERY_DISPLAY_CAPTION", "true");

// Affichage en Consultation ou en Modification selon cette variable:
$_SESSION['admin']=true;

/******************* FIN DU PARAMETRAGE DU SCRIPT ********************/

// On appelle la fonction avec en paramètre le nom du dossier à scanner:
diaporama("images_diaporama");

/***********************************************************************************************************************************************************************
SCIPT PERMETTANT DE GENERER UN DIAPORAMA EN JAVASCRIPT AFFICHANT AUTOMATIQUEMENT LES PHOTOS EXTRAITES D'UN REPERTOIRE.
APRES VERIFICATION DES DROITS D'UTILISATEURS, LE SCRIPT PERMET D'UPLOADER, D'ARRONDIR LES ANGLES, DE REDIMENSIONNER, ET DE CREER UNE MINIATURE DE LA PHOTO.
***********************************************************************************************************************************************************************/

/**********************************************************************************************
Fonction permettant l'ajout d'une photo.
$dossier_destination est le dossier de destination ou les fichiers seront enregistré,
si le dossier n'existe pas, il sera crée automatiquement ainsi que le sous dossier contenant les mininiature.
Le chemin du dossier doit etre indiqué depuis la page ou l'on appelle la fonction.
Les extensions autorisées sont 'png', 'PNG', 'gif', 'GIF', 'jpg', 'JPG', 'jpeg', 'JPEG'.
$code_couleur_fond est la couleur de fond du diaporama
**********************************************************************************************/
function diaporama($dossier_destination){
// On verifie que l'utilisateur possede les droit pour administrer le script
if(isset ($_SESSION['admin']) && $_SESSION['admin']==true){
// On verifie que le dossier ou l'on veut enregistrer existe, sinon on le creér en lui donnant les droit 755
if(is_dir ($dossier_destination )==false){
mkdir ("$dossier_destination",0755);
}

// On verifie que le dossier ou l'on veut enregistrer les miniatures existe, sinon on le creér en lui donnant les droit 755
$dossier_miniature = $dossier_destination."/miniature";
if(is_dir($dossier_miniature )==false){
mkdir("$dossier_miniature",0755);
}

// Si l'utilisateur arrive sur cette page en voulant supprimer une photo
if(isset($_GET['supprimerphoto'])){
$_GET['supprimerphoto'] = utf8_decode($_GET['supprimerphoto']);
// On teste si les fichiers existent
if(file_exists($dossier_destination.'/'.$_GET['supprimerphoto'])){
// On suprime le fichier
unlink($dossier_destination.'/'.$_GET['supprimerphoto']);
}
if(file_exists($dossier_destination.'/miniature/'.$_GET['supprimerphoto'])){
// On suprime le fichier
unlink($dossier_destination.'/miniature/'.$_GET['supprimerphoto']);
}
}

// On teste si la variable $_FILES declare une erreur
if(isset($_FILES['fichier']['error'])){
switch ($_FILES['fichier']['error']){
case 1: // UPLOAD_ERR_INI_SIZE
echo"Le fichier dépasse la limite autorisée par le serveur (fichier php.ini) !";
break;
case 2: // UPLOAD_ERR_FORM_SIZE
echo "Le fichier dépasse la limite autorisée dans le formulaire HTML !";
break;
case 3: // UPLOAD_ERR_PARTIAL
echo "L'envoi du fichier a été interrompu pendant le transfert !";
break;
case 4: // UPLOAD_ERR_NO_FILE
echo "Le fichier que vous avez envoyé a une taille nulle !";
break;
}
}

// On teste si un fichier a eté envoyé
if(isset($_FILES['fichier'])){
// On teste si le fichier n'est pas trop gros
if($_FILES['fichier']['size'] <= POIDS_FICHIER_MAX){
// On décode le nom du fichier
$_FILES['fichier']['name'] = utf8_decode($_FILES['fichier']['name']);

// On recupere le type d'extension du fichier et on le place dans $extension_upload
$infosfichier = pathinfo($_FILES['fichier']['name']);
$extension_upload = strtolower($infosfichier['extension']);

// On donne la liste des extensions autorisées
$extensions_autorisees = array('jpg', 'jpeg', 'gif', 'png');

// On verifie si l'extension du fichier correspond a une extension autorisé
if (in_array($extension_upload, $extensions_autorisees)){
// on creer le chemin du repertoire de destination
$chemin_fichier=$dossier_destination.'/';
$chemin_fichier_miniature=$dossier_miniature.'/';

// On copie le fichier original dans le repertoire courant
// Copier d'abord le fichier permet d'economiser la memoire du serveur
move_uploaded_file($_FILES['fichier']['tmp_name'], $_FILES['fichier']['name']);

// On fixe les droit sur le fichier a 0644
chmod($_FILES['fichier']['name'],0644);

// On redimensione le fichier image pour créer un fichier image png de dimension reduite
$nom_fichier_modifier = redimensionner_image($_FILES['fichier']['name'], HAUTEUR_MAXI_IMAGE, $chemin_fichier);

// On arondi les angles de l'image
arrondir_angle($nom_fichier_modifier, RAYON_ARRONDI_IMAGE);

// On redimensione le fichier reduit pour créer une miniature
$nom_fichier_miniature = redimensionner_image($_FILES['fichier']['name'], HAUTEUR_MAXI_THUMB, $chemin_fichier_miniature);

// On arondi les angles de l'image miniature
arrondir_angle($nom_fichier_miniature, RAYON_ARRONDI_THUMB);

// On suprime le fichier original
unlink($_FILES['fichier']['name']);

}// Fin du test de l'extension
else echo "extension non autorisée";
} // Fin du test du poid du fichier
else echo "fichier trop lourd";
}// Fin de l'isset $_FILES['fichier']
}// fin du if $_SESSION['admin']==true

afficher_diaporama($dossier_destination);

// On verifie que l'utilisateur possede les droit pour administrer le script
if(isset ($_SESSION['admin'])&&$_SESSION['admin']==true){
// On affiche le formulaire d'envoi d'une image
?> <center>

<hr />
<form method="POST" action="diaporama.php" enctype="multipart/form-data">
<fieldset style="width:340px;"><legend> Ajouter une image </legend>
" />

</fieldset>
</form>
</center><?php
// Fin du formulaire

// On affiche les photos et un lien pour les suprimer
afficher_suprimer_photos($dossier_destination);
}
}

/**********************************************************************************************
FONCTION PERMETTANT DE REDIMENSIONER UNE PHOTO A UNE TAILLE VOULU
La variable $image corespond a l'image source
Les variable $hauteur et $largeur corespondent a la largeur-maxi et la hauteur-maxi voulu
La variable $masque correspond a l'image que l'on superposera a l'image de depart
La variable $chemin_fichier correspond au dossier de destination + / + nom de fichier original
**********************************************************************************************/
function redimensionner_image($image, $hauteur, $chemin_fichier){
// On recupere l'extension de l'image
$infosfichier = pathinfo($image);
$extension = strtolower($infosfichier['extension']);
switch($extension){
case "jpg" : $image_create=imagecreatefromjpeg($image); break;
case "jpeg" : $image_create=imagecreatefromjpeg($image); break;
case "gif" : $image_create=imagecreatefromgif($image); break;
case "png" : $image_create=imagecreatefrompng($image); break;
}

// on recupere la taille de l'image
$taille=getimagesize($image);
// echo "Hauteur originale de l'image: ".$taille[1]."
";
// echo "Largeur originale de l'image: ".$taille[0]."
";

// on calcule le ratio de redimentionement entre la hateur de l'image et la hauteur voulu
$ratio=$taille[1]/$hauteur;
// echo "ratio= ".$ratio."
";

// On calcule les nouvelles dimensions de l'image
$new_largeur=$taille[0]/$ratio;
$new_hauteur=$taille[1]/$ratio;
// echo "Nouvelle Hauteur de l'image: ".$new_hauteur."
";
// echo "Nouvelle Largeur de l'image: ".$new_largeur."

";

// On creer l'image de destination vide avec les nouvelles dimensions
$new_image = imagecreatetruecolor($new_largeur, $new_hauteur);

// On copie l'image uploader dans l'image vide
$copy = imagecopyresampled($new_image, $image_create, 0, 0, 0, 0, $new_largeur, $new_hauteur, $taille[0], $taille[1]);

// On remplace l'extension du fichier image par png
$nom_du_fichier_png = str_replace($infosfichier['extension'],"png",$infosfichier['basename']);

// On enregistre l'image au format png
imagepng($new_image,$chemin_fichier."/".$nom_du_fichier_png);

// On detruit l'image $new_image
imagedestroy($new_image);

// On renvoie le chemin du fichier créé
return $chemin_fichier."/".$nom_du_fichier_png;
}

/**********************************************************************************************
FONCTION PERMETTANT D'AFFICHER ET DE SUPRIMER UNE PHOTO
On scanne le dossier afin de recuperer la liste de toutes les photos
On affiche la liste des photos avec un lien permettant de suprimer la photo selectionée
**********************************************************************************************/
function afficher_suprimer_photos($dossier_destination){
// On verifie que le dossier de destination existe
if(is_dir ($dossier_destination)==false){
echo "Dossier de destination inexistant ";
}
else{
// On ouvre le dossier ou se trouve les photos
$dossier = opendir($dossier_destination) or die('Erreur');

// On donne la liste des extensions de fichier a afficher
$extensions_autorisees = array('jpg', 'jpeg', 'gif', 'png');

echo "\r\n <center>";
// On affiche les photos contenu dans le dossier
while($resultat = readdir($dossier)){
// On teste si $resultat n'est pas un dossier ou un lien parrent
if($resultat != '.' && $resultat != '..' && !is_dir($dossier_destination."/".$resultat) ){
// Encode le nom du fichier
$resultat = utf8_encode($resultat);
// On recupere l'extension du fichier
$infosfichier = pathinfo($resultat);
$extension = strtolower($infosfichier['extension']);

// On verifie si l'extension du fichier correspond a une extension autorisé
if(in_array($extension, $extensions_autorisees)){
// Pour lisibilité du code généré:
echo "\r\n ";
// On affiche la photo avec un lien pointant sur cette meme page avec en argument $_GET le nom de la photo
echo "<hr />
Supprimer la photo: ".$resultat."

";
// Pour lisibilité du code généré:
echo "\r\n ";
// On affiche la photo avec un lien pointant sur cette meme page avec en argument $_GET le nom de la photo
echo '

';
}
}
}
// On referme le dossier
closedir($dossier);
echo "\r\n </center>";
}// fin du else verification d'existance du dossier
}

/**********************************************************************************************
FONCTION PRINCIPALE QUI S'OCCUPE DE SCANNER LE DOSSIER ET AFFICHER LE DIAPORAMA
$dossier_destination: Le dossier à scanner pour afficher le diaporama
**********************************************************************************************/
function afficher_diaporama($dossier_destination){
// On ouvre le dossier ou se trouvent les photos
$dossier = opendir($dossier_destination) or die('Erreur');

// On donne la liste des extensions autorisées
$extensions_autorisees = array('jpg', 'jpeg', 'gif', 'png');

$contenu_dossier_photo = array();
$nom_photo = array();
// on affiche toutes les photos contenu dans le dossier
while($resultat = readdir($dossier)){
// On teste si $resultat n'est pas un dossier ou un lien parrent
if($resultat != '.' && $resultat != '..' && !is_dir($dossier_destination."/".$resultat) ){
// Encode le nom du fichier
$resultat = utf8_encode($resultat);

$fileChunks = array_reverse(explode(".", $resultat));
$extension_resultat = strtolower($fileChunks[0]);

// On verifie si l'extension du fichier correspond a une extension autorisé
if(in_array($extension_resultat, $extensions_autorisees)){
// On integre toute les photos dans un array $contenu_dossier_photo
$contenu_dossier_photo[]=$resultat;
$nom_photo[]=$fileChunks[1];
}
}
}

// On recupere l'indice du dernier enregistrement de l'array $contenu_dossier_photo
$nb_photos=count($contenu_dossier_photo);

// On genere le code javascript permettant d'afficher le diaporama
if($nb_photos > 0){
?>
<script type="text/javascript">
$(document).ready(function(){
$('#diaporama').transition({
title: '<?php echo GALLERY_TITLE ?>', // Gallery title
autoRun: <?php echo GALLERY_AUTORUN ?>, // Autorun slideshow ?
displayTime: <?php echo GALLERY_IMAGE_DISPLAY_TIME ?>, // How long an image is displayed
transitionTime: <?php echo GALLERY_IMAGE_TRANSITION_TIME ?>, // Duration of the fade in/fade out effect
width: <?php echo GALLERY_IMAGE_MAX_WIDTH ?>, // Maximum width of the gallery images
height: <?php echo GALLERY_IMAGE_MAX_HEIGHT ?>, // Maximum height of the gallery images
thumbs: <?php echo $nb_photos ?>, // Number of thumbnails to display
thumbSize: {width: <?php echo GALLERY_THUMB_MAX_WIDTH ?>, height: <?php echo GALLERY_THUMB_MAX_HEIGHT ?>}, // Size of each thumbnail
displayTitle: <?php echo GALLERY_DISPLAY_TITLE ?>, // Display the gallery title
displayCaption: <?php echo GALLERY_DISPLAY_CAPTION ?>, // Display the images caption
images : [<?php
// On affiche toute les lignes correspondant aux photos
for($i=0; $i<$nb_photos; $i++){
// Pour lisibilité du code généré:
echo "\r\n ";
// Insertion de l'image:
echo "{image: '".$dossier_destination."/".$contenu_dossier_photo[$i]."', thumb: '".$dossier_destination."/miniature/".$contenu_dossier_photo[$i]."', title: '".$nom_photo[$i]."'}";
// Pas de virgule après la dernière image:
if($i<$nb_photos-1){
echo",";
}
}
// Pour lisibilité du code généré:
echo "\r\n ";
?>]
});
});
</script>

<?php
}
}

/**********************************************************************************************
FONCTION PERMETTANT D'ARRONDIR LES ANGLES DE LA PHOTO $image
La photo doit etre au format png
On créer 4 images png correspondant au 4 angles
On superpose ces 4 images a l'image de depart
**********************************************************************************************/
function arrondir_angle($image, $rayon_arrondi){
// Cette partie peut etre activé si le fichier source n'est pas au format png
$image_create=imagecreatefrompng ($image);

// on recupere la taille de l'image
$taille=getimagesize($image);

// On determine la largeur et la hauteur de l'image contenant les coin
$largeur_coin = $rayon_arrondi/2;
$hauteur_coin = $rayon_arrondi/2;

// ********* Coin Bas Gauche ********/
// On créer une image vide nomé $image_coin de couleur $couleur_fond et de taille $rayon_arrondi
$image_coin = imagecreate($largeur_coin, $hauteur_coin);
// On attribu une couleur (noir transparent, normallement sa n'existe pas souvent) au fond
$couleur_fond_coin = imagecolorallocatealpha($image_coin, 0, 0, 0, 0);
// On attribu une couleur transparente
$couleur_transparente_coin = imagecolorallocate($image_coin, 255, 255, 255); // pour le moment la couleur est blanche
// On rend la couleur blanche transparente
imagecolortransparent($image_coin, $couleur_transparente_coin);
// On créer un cercle plein de rayon $rayon_arrondi, de position -2, -2 et de couleur $couleur_transparente_coin
imagefilledellipse($image_coin,$rayon_arrondi-$largeur_coin,0, $rayon_arrondi, $rayon_arrondi, $couleur_transparente_coin);
// On copie l'image $image_coin sur l'image principal $image
imagecopy($image_create, $image_coin, 0, $taille[1]-$largeur_coin, 0, 0, $largeur_coin, $hauteur_coin);
// On detruit l'image du coin
imagedestroy($image_coin);

// ********* Coin Bas Droit ********/
// On créer une image vide nomé $image_coin de couleur $couleur_fond et de taille $rayon_arrondi
$image_coin = imagecreate($largeur_coin, $hauteur_coin);
// On attribu une couleur (noir transparent, normallement sa n'existe pas souvent) au fond
$couleur_fond_coin = imagecolorallocatealpha($image_coin, 0, 0, 0, 0);
// On attribu une couleur transparente
$couleur_transparente_coin = imagecolorallocate($image_coin, 255, 255, 255); // pour le moment la couleur est blanche
// On rend la couleur blanche transparente
imagecolortransparent($image_coin, $couleur_transparente_coin);
// On créer un cercle plein de rayon $rayon_arrondi, de position -2, -2 et de couleur $couleur_transparente_coin
imagefilledellipse($image_coin,0,0, $rayon_arrondi, $rayon_arrondi, $couleur_transparente_coin);
// On copie l'image $image_coin sur l'image principal $image
imagecopy($image_create, $image_coin, $taille[0]-$largeur_coin, $taille[1]-$hauteur_coin, 0, 0, $largeur_coin, $hauteur_coin);
// On detruit l'image du coin
imagedestroy($image_coin);

// ********* Coin Haut Gauche ********/
// On créer une image vide nomé $image_coin de couleur $couleur_fond et de taille $rayon_arrondi
$image_coin = imagecreate($largeur_coin, $hauteur_coin);
// On attribu une couleur (noir transparent, normallement sa n'existe pas souvent) au fond
$couleur_fond_coin = imagecolorallocatealpha($image_coin, 0, 0, 0, 0);
// On attribu une couleur transparente
$couleur_transparente_coin = imagecolorallocate($image_coin, 255, 255, 255); // pour le moment la couleur est blanche
// On rend la couleur blanche transparente
imagecolortransparent($image_coin, $couleur_transparente_coin);
// On créer un cercle plein de rayon $rayon_arrondi, de position -2, -2 et de couleur $couleur_transparente_coin
imagefilledellipse($image_coin,$rayon_arrondi-$hauteur_coin,$rayon_arrondi-$largeur_coin, $rayon_arrondi, $rayon_arrondi, $couleur_transparente_coin);
// On copie l'image $image_coin sur l'image principal $image
imagecopy($image_create, $image_coin, 0, 0, 0, 0, $largeur_coin, $hauteur_coin);
// On detruit l'image du coin
imagedestroy($image_coin);

// ********* Coin Haut droit ********/
// On créer une image vide nomé $image_coin de couleur $couleur_fond et de taille $rayon_arrondi
$image_coin = imagecreate($largeur_coin, $hauteur_coin);
// On attribu une couleur (noir transparent, normallement sa n'existe pas souvent) au fond
$couleur_fond_coin = imagecolorallocatealpha($image_coin, 0, 0, 0, 0);
// On attribu une couleur transparente
$couleur_transparente_coin = imagecolorallocate($image_coin, 255, 255, 255); // pour le moment la couleur est blanche
// On rend la couleur blanche transparente
imagecolortransparent($image_coin, $couleur_transparente_coin);
// On créer un cercle plein de rayon $rayon_arrondi, de position -2, -2 et de couleur $couleur_transparente_coin
imagefilledellipse($image_coin,0,$rayon_arrondi-$largeur_coin, $rayon_arrondi, $rayon_arrondi, $couleur_transparente_coin);
// On copie l'image $image_coin sur l'image principal $image
imagecopymerge($image_create, $image_coin, $taille[0]-$largeur_coin, 0, 0, 0, $largeur_coin, $hauteur_coin,100 );
// On detruit l'image du coin
imagedestroy($image_coin);

// On rend la couleur noir transparent, transparente ...
$couleur_a_rendre_transparente = imagecolorallocatealpha($image_create, 0, 0, 0, 0);
imagecolortransparent($image_create, $couleur_a_rendre_transparente);

// On enregistre l'image png de la photo et des coins arrondis
imagepng($image_create,$image);

// On detruit l'image créer
imagedestroy($image_create);
}
?>

</html>
meliubaf Messages postés 22 Date d'inscription lundi 1 octobre 2007 Statut Membre Dernière intervention 6 novembre 2009
30 nov. 2009 à 10:49
Bonjour, une petite capture écran serait la bienvenue dans la description je pense.
crazygogo Messages postés 135 Date d'inscription samedi 18 janvier 2003 Statut Membre Dernière intervention 17 avril 2009
25 nov. 2009 à 11:54
ah... il a pas pris les tabulations... dommage pour la présentation...
crazygogo Messages postés 135 Date d'inscription samedi 18 janvier 2003 Statut Membre Dernière intervention 17 avril 2009
25 nov. 2009 à 11:53
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script type="text/javascript" src="jquery-1.3.1.js"></script>
<script type="text/javascript" src="jquery.transition-0.2.1.pack.js"></script>
<link href="diaporama.css" rel="stylesheet" type="text/css" />
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Diaporama</title>
</head>

<?php
// Affichage en Consultation ou en Modification selon cette variable:
$_SESSION['admin']=true;

/*
SCIPT PERMETTANT DE GENERER UN DIAPORAMA EN JAVASCRIPT AFFICHANT AUTOMATIQUEMENT LES PHOTOS EXTRAITES D’UN REPERTOIRE. APRES VERIFICATION DES DROITS D’UTILISATEURS, LE SCRIPT PERMET D’UPLOADER, D’ARRONDIR LES ANGLES, DE REDIMENSIONNER, ET DE CREER UNE MINIATURE DE LA PHOTO.
*/

/**********************************************************************************************/
// Fonction permettant l'ajout d'une photo.
// $taille_fichier_maxi est la taille maximum autorisé du fichier a envoyé.
// $dossier_destination est le dossier de destination ou les fichiers seront enregistré, si le dossier n'existe pas, il sera crée automatiquement ainsi que le sous dossier contenant les mininiature. Le chemin du dossier doit etre indiqué depuis la page ou l'on appelle la fonction.
// Les extensions autorisées sont 'png', 'PNG', 'gif', 'GIF', 'jpg', 'JPG', 'jpeg', 'JPEG'.
// $hauteur_maxi_photo est la hauteur maximum en pixels que aura la photo lors de son redimensionement
// $hauteur_maxi_miniature est la hauteur maximum en pixels que aura la photo lors de son redimensionement
// $rayon_coin_arrondi est la taille en pixels du rayon des arrondis des angles de la photo
// $code_couleur_fond est la couleur de fond du diaporama
/**********************************************************************************************/
function diaporama($taille_fichier_maxi, $dossier_destination, $hauteur_maxi_photo, $hauteur_maxi_miniature, $rayon_coin_arrondi, $rayon_coin_arrondi_miniature){
// On verifie que l'utilisateur possede les droit pour administrer le script
if(isset ($_SESSION['admin'])&&$_SESSION['admin']==true){
// On verifie que le dossier ou l'on veut enregistrer existe, sinon on le creér en lui donnant les droit 755
if(is_dir ($dossier_destination )==false){
mkdir ("$dossier_destination",0755);
}

// On verifie que le dossier ou l'on veut enregistrer les miniatures existe, sinon on le creér en lui donnant les droit 755
$dossier_miniature=$dossier_destination."/miniature";
if(is_dir ($dossier_miniature )==false){
mkdir ("$dossier_miniature",0755);
}

// Si l'utilisateur arrive sur cette page en voulant supprimer une photo
// On suprime la photo
if(isset($_GET['supprimerphoto'])){
// On teste si les fichiers existent
if(file_exists($dossier_destination.'/'.$_GET['supprimerphoto'])){
// On suprime le fichier
unlink($dossier_destination.'/'.$_GET['supprimerphoto']);
}
if(file_exists($dossier_destination.'/miniature/'.$_GET['supprimerphoto'])){
// On suprime le fichier
unlink($dossier_destination.'/miniature/'.$_GET['supprimerphoto']);
}
//echo "tentative de supression effectué de ".$dossier_destination.'/'.$_GET['supprimerphoto'];
}

// On teste si la variable $_FILES declare une erreur
if(isset($_FILES['fichier']['error'])){
switch ($_FILES['fichier']['error']){
case 1: // UPLOAD_ERR_INI_SIZE
echo"Le fichier dépasse la limite autorisée par le serveur (fichier php.ini) !";
break;
case 2: // UPLOAD_ERR_FORM_SIZE
echo "Le fichier dépasse la limite autorisée dans le formulaire HTML !";
break;
case 3: // UPLOAD_ERR_PARTIAL
echo "L'envoi du fichier a été interrompu pendant le transfert !";
break;
case 4: // UPLOAD_ERR_NO_FILE
echo "Le fichier que vous avez envoyé a une taille nulle !";
break;
} // Fin du switch
}// Fin du test d'erreur

// On teste si un fichier a eté envoyé
if(isset($_FILES['fichier'])){
// On teste si le fichier n'est pas trop gros
if($_FILES['fichier']['size'] <= $taille_fichier_maxi){
// On recupere le type d'extension du fichier et on le place dans $extension_upload
$infosfichier = pathinfo($_FILES['fichier']['name']);
$extension_upload = strtolower($infosfichier['extension']);

// On donne la liste des extensions autorisées
$extensions_autorisees = array('jpg', 'jpeg', 'gif', 'png');

// On verifie si l'extension du fichier correspond a une extension autorisé
if (in_array($extension_upload, $extensions_autorisees)){
// on creer le chemin du repertoire de destination
$chemin_fichier=$dossier_destination.'/';
// echo "chemin du fichier: ".$chemin_fichier."
";
$chemin_fichier_miniature=$dossier_miniature.'/';
// echo "chemin du fichier miniature: ".$chemin_fichier_miniature."
";

// On copie le fichier original dans le repertoire courant
// Copier d'abord le fichier permet d'economiser la memoire du serveur
// Sinon probleme d'alocation memoire sur celeonet
move_uploaded_file($_FILES['fichier']['tmp_name'], $_FILES['fichier']['name']);

// On fixe les droit sur le fichier a 0644
chmod($_FILES['fichier']['name'],0644);

// On redimensione le fichier image pour créer un fichier image png de dimension reduite
$nom_fichier_modifier=redimensionner_image ($_FILES['fichier']['name'], $hauteur_maxi_photo, $chemin_fichier);

// On arondi les angles de l'image
arrondir_angle ($nom_fichier_modifier, $rayon_coin_arrondi);

// On redimensione le fichier reduit pour créer une miniature
$nom_fichier_miniature=redimensionner_image ($_FILES['fichier']['name'], $hauteur_maxi_miniature, $chemin_fichier_miniature);

// On arondi les angles de l'image miniature
arrondir_angle ($nom_fichier_miniature, $rayon_coin_arrondi_miniature);

// On suprime le fichier original
unlink($_FILES['fichier']['name']);

}// Fin du test de l'extension
else echo "extension non autorisé";
} // Fin du test du poid du fichier
else echo "fichier trop lourd";
}// Fin de l'isset $_FILES['fichier']
}// fin du if $_SESSION['admin']==true

afficher_diaporama($dossier_destination);

// On verifie que l'utilisateur possede les droit pour administrer le script
if(isset ($_SESSION['admin'])&&$_SESSION['admin']==true){
// On affiche le formulaire ?>
<center>

<hr />
<form method="POST" action="diaporama.php" enctype="multipart/form-data">
<fieldset style="width:340px;"><legend> Ajouter une image </legend>
" />

</fieldset>
</form>

</center><?php
// Fin du formulaire

// On affiche les photos et un lien pour les suprimer
afficher_suprimer_photos($dossier_destination);
}
}

/**********************************************************************************************/
// FONCTION PERMETTANT DE REDIMENSIONER UNE PHOTO A UNE TAILLE VOULU
// La variable $image corespond a l'image source
// Les variable $hauteur et $largeur corespondent a la largeur-maxi et la hauteur-maxi voulu
// La variable $masque correspond a l'image que l'on superposera a l'image de depart
// La variable $chemin_fichier correspond au dossier de destination + / + nom de fichier original
/**********************************************************************************************/
function redimensionner_image($image, $hauteur, $chemin_fichier){
// On recupere l'extension de l'image
$infosfichier = pathinfo($image);
$extension = strtolower($infosfichier['extension']);
switch($extension){
case "jpg" : $image_create=imagecreatefromjpeg($image); break;
case "jpeg" : $image_create=imagecreatefromjpeg($image); break;
case "gif" : $image_create=imagecreatefromgif($image); break;
case "png" : $image_create=imagecreatefrompng($image); break;
}

// on recupere la taille de l'image
$taille=getimagesize($image);
// echo "Hauteur originale de l'image: ".$taille[1]."
";
// echo "Largeur originale de l'image: ".$taille[0]."
";
// on calcule le ratio de redimentionement entre la hateur de l'image et la hauteur voulu
$ratio=$taille[1]/$hauteur;
// echo "ratio= ".$ratio."
";
// On calcule les nouvelles dimensions de l'image
$new_largeur=$taille[0]/$ratio;
$new_hauteur=$taille[1]/$ratio;
// echo "Nouvelle Hauteur de l'image: ".$new_hauteur."
";
// echo "Nouvelle Largeur de l'image: ".$new_largeur."

";

// On creer l'image de destination vide avec les nouvelles dimensions
$new_image=imagecreatetruecolor($new_largeur, $new_hauteur);

// On copie l'image uploader dans l'image vide
$copy=imagecopyresampled($new_image, $image_create, 0, 0, 0, 0, $new_largeur, $new_hauteur, $taille[0], $taille[1]) ;

// On remplace l'extension du fichier image par png
$nom_du_fichier_png=str_replace($infosfichier['extension'],"png",$infosfichier['basename']);
// On enregistre l'image au format png
imagepng($new_image,$chemin_fichier."/".$nom_du_fichier_png);

// On detruit l'image $new_image
imagedestroy($new_image);

// On renvoie le chemin du fichier créer
return $chemin_fichier."/".$nom_du_fichier_png;
}

/**********************************************************************************************/
// FONCTION PERMETTANT D'AFFICHER ET DE SUPRIMER UNE PHOTO
// On scanne le dossier afin de recuperer la liste de toutes les photos
// On affiche la liste des photos avec un lien permettant de suprimer la photo selectionée
// On suprime la photo
// On reafiche la page
/**********************************************************************************************/
function afficher_suprimer_photos($dossier_destination){
// On verifie que le dossier de destination existe
if(is_dir ($dossier_destination)==false){
echo "Dossier de destination inexistant ";
}
else{
// On ouvre le dossier ou se trouve les photos
$dossier = opendir($dossier_destination) or die('Erreur');

// On donne la liste des extensions de fichier a afficher
$extensions_autorisees = array('jpg', 'jpeg', 'gif', 'png');

echo "<center>";
// On affiche les photos contenu dans le dossier
while($resultat = readdir($dossier)){
// On teste si $resultat n'est pas un dossier ou un lien parrent
if($resultat != '.' && $resultat != '..' && !is_dir($dossier_destination."/".$resultat) ){
// $statut=is_file($resultat);
// On recupere l'extension du fichier
$infosfichier = pathinfo($resultat);
$extension = strtolower($infosfichier['extension']);

// On verifie si l'extension du fichier correspond a une extension autorisé
if(in_array($extension, $extensions_autorisees)){
// On affiche la photo avec un lien pointant sur cette meme page avec en argument $_GET le nom de la photo
echo "<hr />Supprimer la photo: ".$resultat."

";
echo '

';
}
}
}
// On referme le dossier
closedir($dossier);
echo "</center>";
}// fin du else verification d'existance du dossier
}

function afficher_diaporama($dossier_destination){
// On ouvre le dossier ou se trouvent les photos
$dossier = opendir($dossier_destination) or die('Erreur');

// On genere le code javascript permettant d'afficher le diaporama
?>
<script type="text/javascript" >
$(document).ready(function() {
$('#diaporama').transition({
autoRun: true,
displayTime: 5000,
transitionTime: 1500,
title: 'Diaporama',
width: 350,
height: 265,
thumbSize: {width: 74, height: 56},
images : [<?php

// On donne la liste des extensions autorisées
$extensions_autorisees = array('jpg', 'jpeg', 'gif', 'png');

// on affiche toutes les photos contenu dans le dossier
// avec une ligne speciale sans virgule a la fin pour le dernier element de l'array $resultat
while($resultat = readdir($dossier)){
// On teste si $resultat n'est pas un dossier ou un lien parrent
if($resultat != '.' && $resultat != '..' && !is_dir($dossier_destination."/".$resultat) ){
$fileChunks = array_reverse(explode(".", $resultat));
$extension_resultat = strtolower($fileChunks[0]);

// On verifie si l'extension du fichier correspond a une extension autorisé
if(in_array($extension_resultat, $extensions_autorisees)){
// On integre toute les photos dans un array $contenu_dossier_photo
$contenu_dossier_photo[]=$resultat;
$nom_photo[]=$fileChunks[1];
}
}
}

// On recupere l'indice du dernier enregistrement de l'array $contenu_dossier_photo
$nb_photos=count($contenu_dossier_photo);

// On affiche toute les lignes correspondant au photos sauf la derniere
for($i=0; $i<$nb_photos; $i++){
// Pour lisibilité du code généré:
echo "\r\n ";
// Insertion de l'image:
echo "{image: '".$dossier_destination."/".$contenu_dossier_photo[$i]."', thumb: '".$dossier_destination."/miniature/".$contenu_dossier_photo[$i]."', title: '".$nom_photo[$i]."'}";
// Pas de virgule après la dernière image:
if($i<$nb_photos-1){
echo",";
}
}
?>
]
});
});
</script>


<?php
}

/**********************************************************************************************/
// FONCTION PERMETTANT D'ARRONDIR LES ANGLES DE LA PHOTO $image
// La photo doit etre au format png
// On créer 4 images png correspondant au 4 angles
// On superpose ces 4 images a l'image de depart
/**********************************************************************************************/
function arrondir_angle($image, $rayon_arrondi){
// Cette partie peut etre activé si le fichier source n'est pas au format png
$image_create=imagecreatefrompng ($image);

// on recupere la taille de l'image
$taille=getimagesize($image);

// On determine la largeur et la hauteur de l'image contenant les coin
$largeur_coin = $rayon_arrondi/2;
$hauteur_coin = $rayon_arrondi/2;

// ********* Coin Bas Gauche ********/
// On créer une image vide nomé $image_coin de couleur $couleur_fond et de taille $rayon_arrondi
$image_coin = imagecreate($largeur_coin, $hauteur_coin);
// On attribu une couleur (noir transparent, normallement sa n'existe pas souvent) au fond
$couleur_fond_coin = imagecolorallocatealpha($image_coin, 0, 0, 0, 0);
// On attribu une couleur transparente
$couleur_transparente_coin = imagecolorallocate($image_coin, 255, 255, 255); // pour le moment la couleur est blanche
// On rend la couleur blanche transparente
imagecolortransparent($image_coin, $couleur_transparente_coin);
// On créer un cercle plein de rayon $rayon_arrondi, de position -2, -2 et de couleur $couleur_transparente_coin
imagefilledellipse($image_coin,$rayon_arrondi-$largeur_coin,0, $rayon_arrondi, $rayon_arrondi, $couleur_transparente_coin);
// On copie l'image $image_coin sur l'image principal $image
imagecopy($image_create, $image_coin, 0, $taille[1]-$largeur_coin, 0, 0, $largeur_coin, $hauteur_coin);
// On detruit l'image du coin
imagedestroy($image_coin);

// ********* Coin Bas Droit ********/
// On créer une image vide nomé $image_coin de couleur $couleur_fond et de taille $rayon_arrondi
$image_coin = imagecreate($largeur_coin, $hauteur_coin);
// On attribu une couleur (noir transparent, normallement sa n'existe pas souvent) au fond
$couleur_fond_coin = imagecolorallocatealpha($image_coin, 0, 0, 0, 0);
// On attribu une couleur transparente
$couleur_transparente_coin = imagecolorallocate($image_coin, 255, 255, 255); // pour le moment la couleur est blanche
// On rend la couleur blanche transparente
imagecolortransparent($image_coin, $couleur_transparente_coin);
// On créer un cercle plein de rayon $rayon_arrondi, de position -2, -2 et de couleur $couleur_transparente_coin
imagefilledellipse($image_coin,0,0, $rayon_arrondi, $rayon_arrondi, $couleur_transparente_coin);
// On copie l'image $image_coin sur l'image principal $image
imagecopy($image_create, $image_coin, $taille[0]-$largeur_coin, $taille[1]-$hauteur_coin, 0, 0, $largeur_coin, $hauteur_coin);
// On detruit l'image du coin
imagedestroy($image_coin);

// ********* Coin Haut Gauche ********/
// On créer une image vide nomé $image_coin de couleur $couleur_fond et de taille $rayon_arrondi
$image_coin = imagecreate($largeur_coin, $hauteur_coin);
// On attribu une couleur (noir transparent, normallement sa n'existe pas souvent) au fond
$couleur_fond_coin = imagecolorallocatealpha($image_coin, 0, 0, 0, 0);
// On attribu une couleur transparente
$couleur_transparente_coin = imagecolorallocate($image_coin, 255, 255, 255); // pour le moment la couleur est blanche
// On rend la couleur blanche transparente
imagecolortransparent($image_coin, $couleur_transparente_coin);
// On créer un cercle plein de rayon $rayon_arrondi, de position -2, -2 et de couleur $couleur_transparente_coin
imagefilledellipse($image_coin,$rayon_arrondi-$hauteur_coin,$rayon_arrondi-$largeur_coin, $rayon_arrondi, $rayon_arrondi, $couleur_transparente_coin);
// On copie l'image $image_coin sur l'image principal $image
imagecopy($image_create, $image_coin, 0, 0, 0, 0, $largeur_coin, $hauteur_coin);
// On detruit l'image du coin
imagedestroy($image_coin);

// ********* Coin Haut droit ********/
// On créer une image vide nomé $image_coin de couleur $couleur_fond et de taille $rayon_arrondi
$image_coin = imagecreate($largeur_coin, $hauteur_coin);
// On attribu une couleur (noir transparent, normallement sa n'existe pas souvent) au fond
$couleur_fond_coin = imagecolorallocatealpha($image_coin, 0, 0, 0, 0);
// On attribu une couleur transparente
$couleur_transparente_coin = imagecolorallocate($image_coin, 255, 255, 255); // pour le moment la couleur est blanche
// On rend la couleur blanche transparente
imagecolortransparent($image_coin, $couleur_transparente_coin);
// On créer un cercle plein de rayon $rayon_arrondi, de position -2, -2 et de couleur $couleur_transparente_coin
imagefilledellipse($image_coin,0,$rayon_arrondi-$largeur_coin, $rayon_arrondi, $rayon_arrondi, $couleur_transparente_coin);
// On copie l'image $image_coin sur l'image principal $image
imagecopymerge($image_create, $image_coin, $taille[0]-$largeur_coin, 0, 0, 0, $largeur_coin, $hauteur_coin,100 );
// On detruit l'image du coin
imagedestroy($image_coin);

// On rend la couleur noir transparent, transparente ...
$couleur_a_rendre_transparente = imagecolorallocatealpha($image_create, 0, 0, 0, 0);
imagecolortransparent($image_create, $couleur_a_rendre_transparente);

// On enregistre l'image png de la photo et des coins arrondis
imagepng($image_create,$image);

// On detruit l'image créer
imagedestroy($image_create);
}

// On appelle la fonction !!!
diaporama("20000000", "images_diaporama", 263, 56, 30, 10);
?>

</html>
crazygogo Messages postés 135 Date d'inscription samedi 18 janvier 2003 Statut Membre Dernière intervention 17 avril 2009
25 nov. 2009 à 11:52
Je suis en train de modifier ta source car je la trouve très intéressante, je sais pas si on peut parler d'améliorations mais en tout cas je la remet à ma sauce...

Par exemple le tableau des extensions autorisées je le met que en minuscules et lors de la récupération de l'extension je fais un strtolower... Pareil lors du switch($extension)...

Dans la fonction afficher_diaporama je teste aussi les extensions car dans mon dossier image il y'a un fichier caché thumbs.db qui me provoque une image non trouvée dans le diaporama...

Je pense que le tableau $extensions_autorisees devrait pouvoir être déclaré qu'une seule fois mais on m'a dit que les globales c'était mal alors je n'ai pas modifié ce point la !!!

Dans la légende de l'image j'affiche le nom du fichier sans l'extension...

Je modifie aussi un peu la présentation...

Je vais poster le code modifié dans un autre message celui-ci étant déjà trop long !!!

:)
giloum Messages postés 17 Date d'inscription dimanche 30 septembre 2007 Statut Membre Dernière intervention 26 février 2009
25 nov. 2009 à 11:26
Merci Crazygogo, je viens de le rajouter ...
Mais je n'arrive pas a remettre la main sur le fichier non compressé.
C'est donc la version pack.
crazygogo Messages postés 135 Date d'inscription samedi 18 janvier 2003 Statut Membre Dernière intervention 17 avril 2009
25 nov. 2009 à 09:55
il manque le fichier jquery.transition-0.2.1.pack.js
Rejoignez-nous