IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

EDI, CMS, Outils, Scripts et API PHP Discussion :

[Galerie] Recherche un script de miniature


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2005
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 116
    Points : 58
    Points
    58
    Par défaut [Galerie] Recherche un script de miniature
    Bonjour.

    Ne trouvant pas mon bonheur dans le forum ni sur internet je viens poser ma question ici.

    Qui connait un script vraiment tout simple qui me permet de copier une image uploadée depuis un formulaire pour la miniaturiser dans un autre dossier?

    J'ai déjà le formulaire.
    J'upload bien les images avec leur taille standard.
    J'ai un script qui les renomme pour éviter les doublons.

    J'ai juste besoin d'un script pour les copier dans mon dossier miniature et les miniaturiser en même temps.

    Merci

  2. #2
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2008
    Messages
    252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2008
    Messages : 252
    Points : 358
    Points
    358
    Par défaut
    j'ai fait une fonction il y'à quelque temps qui semble correspondre à ton besoin, elle est disponible ici :http://www.chezneg.fr/leblog/chezneg....php?id_art=67 (fonctionne seulement pour les .jpg)

  3. #3
    Membre du Club
    Inscrit en
    Juillet 2005
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 116
    Points : 58
    Points
    58
    Par défaut
    Merci numew, ton script a l'air pas mal mais il m'en faut un pour toutes les extensions. (jpeg, gif, png)

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 165
    Points : 137
    Points
    137
    Par défaut
    en fait les gif on a pas le droit de les modifier par la bibliothèque GD .. y a un brevet dessus il me semble
    pour les PNG je n'ai pas vu le script proposé en detail mais il suffit peut etre de faire un test pour voir si çà marche ?

  5. #5
    Membre actif

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2008
    Messages : 186
    Points : 234
    Points
    234
    Par défaut
    Tant que j'y suis, moi j'ai utilisé celui de la doc de PHP :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    <?php
    // Le fichier
    $filename = 'PHOTOS/'.$fichier;
     
    // Définition de la largeur et de la hauteur maximale
    $width = 200;
    $height = 200;
     
    // Content type
    header('Content-type: image/jpeg');
     
    // Cacul des nouvelles dimensions
    list($width_orig, $height_orig) = getimagesize($filename);
     
    $ratio_orig = $width_orig/$height_orig;
     
    if ($width/$height > $ratio_orig) {
       $width = $height*$ratio_orig;
    } else {
       $height = $width/$ratio_orig;
    }
     
    // Redimensionnement
    $image_p = imagecreatetruecolor($width, $height);
    $image = imagecreatefromjpeg($filename);
    imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);
     
    // Affichage
    imagejpeg($image_p, null, 100);
    ?>
    Disponible ici http://fr.php.net/manual/fr/function...yresampled.php

    A noté que tu peux choisir le dossier de destination à cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // Affichage
    imagejpeg($image_p, null, 100);
    Tu peux mettre à la place par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // Affichage
     imagejpeg($image_p, "PHOTOS/MINI/".$fichier, 100);

  6. #6
    Membre du Club
    Inscrit en
    Juillet 2005
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 116
    Points : 58
    Points
    58
    Par défaut
    J'ai essayé ce script spike2 mais il m'indique déjà un problème:

    Warning: Cannot modify header information - headers already sent by (output started at /mnt/140/sdb/7/6/monsite/wallpapers/ajout.php:7) in /mnt/140/sdb/7/6/gimpcenter/monsite/ajout.php on line 120

    et la ligne 120 corespond à:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('Content-type: image/jpeg');
    Une autre question:
    je peux faire des miniature en png avec ce code?

  7. #7
    Membre actif

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2008
    Messages : 186
    Points : 234
    Points
    234
    Par défaut
    Tu peux supprimer la ligne 120, c'est normal ça créé un doublon, ça marchera quand même.

    Et pour les png ça marche aussi, consulte le lien que j'ai mis avant, il y a un menu sur la gauche de la page, cherche la fonction imagepng.

  8. #8
    Membre habitué Avatar de remyli
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 270
    Points : 151
    Points
    151
    Par défaut
    Le problème "headers already sent" :

    Si tu met :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    imagejpeg($image_p, null, 100);
    le fonction va directement renvoyé l'image sur la sortie.
    http://fr.php.net/manual/en/function.imagejpeg.php

    Si tu as déjà renvoyé quelque chose, le début d'une page html, ou même un simple espace, tu va avoir un conflit de header.



    format png :
    remplace imagecreatefromjpeg par imagecreatefrompng
    et ou
    imagejpeg par imagepng



    A toi de jouer !
    Orthographe => Message Privé constructif svp

  9. #9
    Membre du Club
    Inscrit en
    Juillet 2005
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 116
    Points : 58
    Points
    58
    Par défaut
    Merci pour votre aide.

    Par contre je vois que ce script fonctionne que pour les images jpg.
    J'ai essayé ce que tu m'as dit SoF_AzraeL

    format png :
    remplace imagecreatefromjpeg par imagecreatefrompng
    et ou
    imagejpeg par imagepng

    et ça marche mais maintenant que pour le format png.
    Je ne peux pas faire soit l'un soit l'autre.

    Mais mois je voudrais qu'il puisse enregistrer tous les formats d'image et les miniaturiser en png.
    Est-ce possible en rajoutant du code à ce script ou dois-je en trouver un autre?

    Merci pour votre aide

  10. #10
    Membre habitué Avatar de lolymeupy
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    402
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2006
    Messages : 402
    Points : 180
    Points
    180
    Par défaut
    J'ai trouvé cette fonction qui gère des miniatures (à adaptées évidement):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
     
    function generer_miniature($image, $largeur, $hauteur, $qualite) {
     
    	// chemin de la miniature à générer
    	$dest = "fichier_photos_retaillees/$image";
     
    	// dossier où se trouve l'image source
    	$dossier = "fichier_photos_originales/";
     
    	$img_in = ImageCreateFromJpeg($dossier.'orig'.$image);
     
    	$size = getimagesize($dossier.'orig'.$image);
    	$l = $size[0];
    	$h = $size[1];
     
    	if (($l >= $largeur) && ($h>= $hauteur)) {
     
    		if ($l>$h){
    			$hauteur=80;
    			$new_haut = ($h * $largeur) / $l;
    			if($new_haut < $hauteur) {
     
    				$new_haut = $hauteur;
    				$new_larg = ($l * $hauteur) / $h;
    			} else {
    				$new_larg = $largeur;
    			}
    		}
    		else {
    			$new_haut = ($h * $largeur) / $l;
    			if($new_haut < $hauteur) {
     
    				$new_haut = $hauteur;
    				$new_larg = ($l * $hauteur) / $h;
    			} else {
    				$new_larg = $largeur;
    			}
    		}
    		// on réduit l'image à la largeur voulue, mais en gardant la hauteur proportionnelle
    		$img_out = imagecreatetruecolor($new_larg, $new_haut);
    		ImageCopyResampled($img_out, $img_in, 0, 0, 0, 0, ImagesX($img_out), ImagesY($img_out), $l, $h);
     
    		// création d'une image vide aux dimensions de la miniature
    		$im = imagecreatetruecolor($largeur, $hauteur);
     
    		// on copie la zone de l'image de hauteur voulue dans l'image vide
    		ImageCopy($im, $img_out, 0, 0, 0, 0, $largeur, $hauteur);
    		ImageJpeg($im, $dest, $qualite);
     
    		// destruction des images en mémoire
    		ImageDestroy($img_out);
    		ImageDestroy($im);
     
    	} elseif (($l < $largeur) && ($h >= $hauteur)) {
     
    		$img_out = imagecreatetruecolor($l, $h);
    		ImageCopyResampled($img_out, $img_in, 0, 0, 0, 0, ImagesX($img_out), ImagesY($img_out), $l, $h);
     
    		$im = imagecreatetruecolor($l, $hauteur);
     
    		ImageCopy($im, $img_out, 0, 0, 0, 0, $l, $hauteur);
    		ImageJpeg($im, $dest, $qualite);
     
    		// destruction des images en mémoire
    		ImageDestroy($img_out);
    		ImageDestroy($im);
     
    	} elseif ($l >= $largeur && $h < $hauteur) {
     
    		$img_out = imagecreatetruecolor($l, $h);
    		ImageCopyResampled($img_out, $img_in, 0, 0, 0, 0, ImagesX($img_out), ImagesY($img_out), $l, $h);
     
    		$im = imagecreatetruecolor($largeur , $h);
     
    		ImageCopy($im, $img_out, 0, 0, 0, 0, $largeur, $hauteur);
    		ImageJpeg($im, $dest, $qualite);
     
    		// destruction des images en mémoire
    		ImageDestroy($img_out);
    		ImageDestroy($im);
     
    	} elseif ($l < $largeur && $h< $hauteur) {
     
    		ImageJpeg($img_in, $dest, $qualite);
     
    	}
     
    	// destruction de l'image en mémoire
    	ImageDestroy($img_in);
     
    }
    ...mais le problème, c'est que si une image est +large que haute, elle est rognée au lieu d'être miniaturisée proportionnellement...Donc elle marche bien pour les différentes extensions, mais reste à gérer ce petit bug de "rognage"...

  11. #11
    Membre du Club
    Inscrit en
    Juillet 2005
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 116
    Points : 58
    Points
    58
    Par défaut
    Merci beaucoup lolymeupy, ça marche nickel.

    Depuis le temps que je l'attendais lol.

    Merci

  12. #12
    Membre habitué Avatar de lolymeupy
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    402
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2006
    Messages : 402
    Points : 180
    Points
    180
    Par défaut
    Donc personne n'a d'idée sur le bug de cette fonction de miniaturisation qui "plante" pour les images + larges que hautes...???
    Comment l'empêcher de rogner les images dans ce cas là ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Galerie] Recherche script galerie
    Par lelectronique.com dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 09/06/2017, 10h06
  2. Recherche un script qui me permet de verifier un nom de domaine
    Par agencep dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 03/07/2006, 11h29
  3. Recherche un script code pour afficher la charge serveur
    Par kevinf dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 8
    Dernier message: 02/06/2006, 21h01
  4. Recherche Login Script PHP & MySQL
    Par whbh dans le forum SQL Procédural
    Réponses: 9
    Dernier message: 01/12/2005, 16h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo