Accueil > > > CRÉATION DE MINIATURE D'UNE IMAGE
CRÉATION DE MINIATURE D'UNE IMAGE
Information sur la source
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
- <?
- /**
- * @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";
- }
- ?>
<?
/**
* @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
Historique
- 25 novembre 2007 17:01:48 :
- Deuxième version de cette fonction en tenant compte des
commentaires... (commentaire, test si fichier existant)
- 25 novembre 2007 17:03:20 :
- Deuxième version de cette fonction en tenant compte des commentaires (commentaires explicatif, test du fichier existant).
- 26 novembre 2007 09:54:40 :
- mise à jour en fonction des conseils de malalam
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Liens PHP (appel d'un fichier PHP) [ par vincf1 ]
Bonjour à tous tout d'abord Voila, j'explique mon petit soucis (je suis novice en PHP ).Mon but est d'afficher une image miniat
Réduire une image on-line [ par arickx ]
Salut,Je cherche un moyen de réduire les dimensions ainsi que le poids (pex : de 300ko à 30ko) d'une image au moment de l'upload sur mon site, le tout
Où est l'érreur ? (Image Miniature) [ par ImmortalPC ]
Salut, après avoir cherché une solution pour faire une image miniature en automatique j'ai finalement trouvé un script super Voici le s
Réduire la taille d'une image puis la sauvegarder réduite [ par Animax77 ]
Je suis en train de faire un site dont le principe est d'uploader des dessins pour les partager. ( je fais un peu de pub en passant ^^, il est ici, ma
Création de miniature lors de l'upload d'une image [ par jizz666 ]
Hello, Je suis actuellement entrain de créer un album photo en PHP/MySQL. Mais j'ai un petit problème, je n'arrive pas à créer l
Miniature image [ par Clad49 ]
Salut ! Je me galére a trouver un fonction qui permet de créé une miniature de fichier !une simple ou l'on indique kel fichier on veut
Réduire la taille et par conséquent le poids d'une image avec la lib GD [ par BenXbox ]
Salut à tous, Voila je voudrais savoir comment faire pour réduire la taille et par conséquent le poids d'une image avec la lib GD au moment de l'affi
Petit probleme avec une fonction, PHP [ par rouliendelavegas ]
Bonjour,J'explique une peu cke fait le scriptj'ouvre un dossier "galerie/"dans ce dossier, j'ouvre un repertoire à la foidans le repertoire ouvert je
problème gd2 [ par moi zork ]
bonsoir à tous , Je viens de me mettre au image php avec la librairie GD sauf que j'ai un petit probleme voila mon script :<?phpheader ("Content-ty
Supprimer une image du cache?? Forcer le rechargement? [ par zut69 ]
<td id="HB_Focus_Element" unselec
|
Derniers Blogs
L'INTERFACE NATURELLE DE WINDOWS PHONE 7 SERIESL'INTERFACE NATURELLE DE WINDOWS PHONE 7 SERIES par odewit
La tendance est aux interfaces naturelles (NUI), et le keynote de Bill Buxton au MIX l'a bien souligné.
La charte graphique et ergonomique de Windows Phone 7 a donc été entièrement repensée en vue d'obtenir un maximum d'efficacité sur ce point. En re...
Cliquez pour lire la suite de l'article par odewit COMMENT MAPPER UNE VUE SQL SUR UNE COLLECTION DE COMPLEX TYPE?COMMENT MAPPER UNE VUE SQL SUR UNE COLLECTION DE COMPLEX TYPE? par Matthieu MEZIL
Avec EF, les vues doivent être mappées sur des entity types. Le problème c'est que les entity types doivent avoir une clé. Avec EF, nous avons les complex type qui n'ont pas de clé mais les vues ne peuvent pas être mappées dessus. Avec EF4, il est possibl...
Cliquez pour lire la suite de l'article par Matthieu MEZIL [WF4] UN BINDING ACTIVITY/ACTIVITYDESIGNER QUI PASSE MAL?[WF4] UN BINDING ACTIVITY/ACTIVITYDESIGNER QUI PASSE MAL? par JeremyJeanson
Certain d'entre vous on peut être vécu cette situation embarrassante après quelques temps passer avec WF4 : Au début avec mon " ActivityDesigner" , tout allait bien. Et puis un jour j'ai au des problèmes de " Binding" . Alors nous sommes allé sur le site ...
Cliquez pour lire la suite de l'article par JeremyJeanson
Logiciels
Academy System (10.9.4.0)ACADEMY SYSTEM (10.9.4.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods
|