Création de miniature d'une image

Soyez le premier à donner votre avis sur cette source.

Vue 13 714 fois - Téléchargée 427 fois

Description

Cette fonction enregistre une miniature d'une image.
Les paramètres sont :
- le chemin complet de l'image source.
- le répertoire de destination de l'image réduite.
- la taille maximale de l'image réduite.
- le nom de l'image réduite.
- un flag pour écraser ou pas l'image réduite si elle existe déjà.

Source / Exemple :


<?
	/**

  • @name miniature
  • Créer une miniature d'une image donnée et en retourne l'adresse.
  • @param String sPathFrom : Répertoire d'origine
  • @param String sPathTo : Répertoire de destination
  • @param String integer iMaxDimension : Taille maximale de la miniature
  • @param boolean bOverwrite : Ecraser la miniature si elle existe
*
  • @return String Adresse de la miniature nouvellement crée.
  • /
function miniature ($sPathFrom, $sPathTo, $iMaxDimension, $sNameImage, $bOverwrite=false) { //test des paramètres try { if (!is_string($sPathFrom) ) throw new Exception ('erreur : miniature(). sPathFrom must be a string'); if (!is_string($sPathTo) ) throw new Exception ('erreur : miniature(). sPathTo must be a string'); if (!is_int($iMaxDimension) ) throw new Exception ('erreur : miniature(). iMaxDimension must be a numeric'); if (!is_string($sNameImage) ) throw new Exception ('erreur : miniature(). sNameImage must be a string'); if (!is_bool($bOverwrite) ) throw new Exception ('erreur : miniature(). bOverwrite must be a boolean'); } catch (Exception $e) { echo $e->getMessage()."\n"; return false; } // fin test des paramètres //répertoire de l'image $dir_img = substr($sPathFrom, 0, strrpos($sPathFrom, "/")+1); //test si le fichier existe et qu'on écrase OU que le fichier n'existe pas. if((file_exists($sPathTo.$sNameImage) && true === $bOverwrite) || !file_exists($sPathTo.$sNameImage)) { //Largeur et hauteur des miniatures $width = $iMaxDimension; $height = $iMaxDimension; // Calcul des nouvelles dimensions en gardant les proportions list($width_orig, $height_orig) = getimagesize($sPathFrom); if ($width && ($width_orig < $height_orig)) $width = ($height / $height_orig) * $width_orig; else $height = ($width / $width_orig) * $height_orig; // création d'une image vierge $mini = @ImageCreateTrueColor($width, $height) or die ("Impossible de crée un flux d'image GD"); //On ressample l'image initiale pour en créer une copie en miniature $imgSrc = imagecreatefromjpeg($sPathFrom); ImageCopyResampled($mini, $imgSrc, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig); //On enregistre l'image dans le répertoire des miniatures if (!file_exists($sPathTo) ) { mkdir($sPathTo); chmod ($sPathTo, 0764); } imageJpeg($mini, "".$sPathTo.$sNameImage.".jpg"); } return $sPathTo.$sNameImage.".jpg"; } ?>

Conclusion :


Première source alors soyez indulgant... svp

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
2
Date d'inscription
mardi 14 novembre 2006
Statut
Membre
Dernière intervention
10 août 2011

NON AFFICHAGE DES MINIATURES

Bonjour et merci pour ce code ... et merci à tous les codes qui m'ont aidé à monter mon site.

J'ai donc utilisé ce code pour créer des miniatures à mes albums de photos en les mettant dans un sous répertoire.
Quand j'ouvre mon album, les miniatures doivent s'afficher et en cliquant dessus, l'original apparait dans sa grande dimension.
CEPENDANT, les miniatures ne s'affichaient pas. Juste le texte alternatif du "alt".
Après bien des recherches sur Google (dieu, puisqu'il répond à tout), je suis arrivé à la REPONSE.

Il s'agit de CHMOD()

Le code proposé par défaut est 764
Or il ne permet pas au "public" d'exécuter ce répertoire.
Il a donc fallu le changer en 755

Maintenant les miniatures s'affichent correctement et en cliquant dessus, l'original apparait dans sa grande dimension.

Pour plus de précisions :
http://fr.wikipedia.org/wiki/Chmod explique parfaitement la composition des codes.

http://www.raynette.fr/script-gratuit/aide-chmod.php donne le mode opératoire du paramétrage sur Filezila (ou autre).
Messages postés
6
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
18 août 2008

bonjour a tous.
Je suis un débutant (très débutant) et j'ai utiliser ce bout de code pour créer mes miniatures.

<?php

$img_src = 'image.jpg';
$img_dst = "miniature/miniature_$img_src";

header('Content-type: image/jpeg');

list($width, $height) = getimagesize($img_src);

$newwidth = 100;
$newheight = ((((100*$newwidth)/$width)*$height)/100);

$thumb = imagecreatetruecolor($newwidth, $newheight);
$source = imagecreatefromjpeg($img_src);

imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);

imagejpeg($thumb);

imagejpeg( $thumb, $img_dst, 100);
?>

Je ne sais pas si c'est vraiment la même chose que le code proposé par waterw72 (je ne comprend pas tout ce qu'il a fait je ne suis pas encore au point) mais au final ce bout de code me donne bien une miniature de l'image de départ en conservant les proportions.
Je voudrais bien savoir si ce code est a peu près correct.

Merci d'avance pour vos réponses.
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
41
ouais, je suis d'accord avec malalam : moi aussi je suis d'accord avec Coucou sur ce coup-là. et peut-etre meme sur les autres coups
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
18
Ben on est 3 du même avis alors.
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Hello,

ben moi je suis d'accord avec Coucou sur ce coup-là. On a un code qui fait du redimensionnement, c'est tout. Certes l'algo n'est pas terrible et devrait être amélioré. Oui ça manque d'options. Mais ça reste un script de redimensionnement d'images...une classe pour ça, ce serait déplacé.
Alors si on se fend d'un gros package de traitement des images, là ok, en effet. Mais si c'est juste pour faire du redimensionnement, une fonction c'est très bien.
Afficher les 11 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.