Vous êtes ici Codes PHP et MySQL > Images > Création d'une miniature avec une largeur ou une...

 

Création d'une miniature avec une largeur ou une hauteur maximum à partir d'une image source

Ce script permet la création d'une image redimensionnée d'une hauteur ou d'une largeur maximum tout en gardant ses proportions.

Le script traite le jpg et le png à l'exclusion du gif qui peut être animé.

L'image créée est enregistré dans un dossier spécifique avec le nom d'origine suivi de la largeur ; cela permet d'utiliser l'image d'origine dans plusieurs tailles.

Exemple :
Image d'origine : img/illustrations/A/aristote.jpg
Image redimensionnée : temp/img/illustrations/A/aristote-266px.jpg
 
medium69
Site de l'auteur voir
[4] sources en PHP voir
Code vu 8625 fois
Enregistré le 18 Mai 2008
  • Digg ce code sur digg.com
  • Bookmark ce code sur del.icio.us
  • Bookmark ce code sur Google
  • Bookmark ce code sur Yahoo
  • Ajoute Création d'une miniature avec une largeur ou une hauteur maximum à partir d'une image source
  • Partage ce code sur Facebook
 
 
 
 

Code Source


01.
02.
03.
04.
05.
06.
07.
08.
09.
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.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
 
<?php
/******************************************************************************/
/*                                                                            */
/*                       __        ____                                       */
/*                 ___  / /  ___  / __/__  __ _____________ ___               */
/*                / _ \/ _ \/ _ \_\ \/ _ \/ // / __/ __/ -_|_-<               */
/*               / .__/_//_/ .__/___/\___/\_,_/_/  \__/\__/___/               */
/*              /_/       /_/                                                 */
/*                                                                            */
/*                                                                            */
/******************************************************************************/
/*                                                                            */
/* Titre          : Création d'une miniature avec une largeur ou une...       */
/*                                                                            */
/* URL            : http://www.phpsources.org/scripts390-PHP.htm              */
/* Auteur         : medium69                                                  */
/* Date édition   : 18 Mai 2008                                               */
/* Website auteur : http://www.science-et-vie.net                             */
/*                                                                            */
/******************************************************************************/

/* ***************************************************************************
- vignette($img_file, $img_max_width, $img_max_height)
- Création d'une vignette à partir d'une image ($img_file)
- Les extensions prises en compte sont jpg et png (le gif simple est remplacé
 par le png)
- Le gif n'est jamais redimensionné (gif animé)

* $img_file : chemin vers le fichier image à redimensionner
* $img_max_width : largeur maximum que doit faire la miniature
* $img_max_height : Hauteur maximum que doit faire l'image

Auteur : Will Crochot alias medium69
Site : http://www.science-et-vie.net
*************************************************************************** */

function vignette($img_file$img_max_width$img_max_height) {
  
  $file realpath($img_file); // Chemin canonique absolu de l'image
  $dir dirname($img_file).'/'// Chemin du dossier contenant l'image
  $img_infos getimagesize($file); // Récupération des infos de l'image
  $img_width $img_infos[0]; // Largeur de l'image
  $img_height $img_infos[1]; // Hauteur de l'image
  $img_type $img_infos[2]; // Type de l'image
  
  // Détermination des dimensions de l'image
  if ($img_max_width $img_width) {
    $img_max_width $img_width// Largeur de la vignette
  }
  
  if ($img_max_height $img_height) {
    $img_max_height $img_height// Hauteur de la vignette
  }
  // Facteur largeur par hauteur des dimensions max de la vignette
  $img_thumb_fact_width_height $img_max_width $img_max_height;
  // Facteur largeur par hauteur de l'original
  $img_fact_width_height $img_width $img_height;
  
  // Détermination des dimensions de la vignette
  if ($img_thumb_fact_width_height $img_fact_width_height) {
    $img_thumb_width  $img_max_width// Largeur de la vignette
    $img_thumb_height $img_thumb_width $img_fact_width_height// Hauteur
  } else {
    $img_thumb_height $img_max_height;  // Hauteur de la vignette
    $img_thumb_width  $img_thumb_height $img_fact_width_height// Largeur
  }
  
  // Vérification de la présence de la vignette
  $img_file_temp 'temp/'.$img_file// Adresse de l'image temporaire de base
  // Découpe de la taille de la vignette
  $exp_img_thumb_width explode(','$img_thumb_width);
  //Adresse de la vignette
$img_thumb_name=preg_replace('/(.+).(.+)/U',
                             '$1'.REW.$exp_img_thumb_width[0].'px.$2',
                             $img_file_temp);
  if (is_file($img_thumb_name) ) {
    return $img_thumb_name;
  }    
  
  // Création du dossier de l'image
  $exp_dir explode('/'DOSS_TEMP.$dir); // Découpe du chemin
  $nb_exp_dir count($exp_dir) -1;
  
  
  for  ($a 0$dir NULL$a $nb_exp_dir$a ++) {
    $dir .= $exp_dir[$a].'/'// Chemin du cache
    
    // Détermination du chemin
    if (!is_dir($dir)) {
      mkdir($dir0755true); // Création du dossier
    }
  }
  
  // Sélection des variables selon l'extension de l'image
  switch ($img_type) {
    case 2:
      // Création d'une nouvelle image jpeg à partir du fichier
      $img imagecreatefromjpeg($file);
      $img_ext '.jpg'// Extension de l'image
      break;
    case 3:
      // Création d'une nouvelle image png à partir du fichier
      $img imagecreatefrompng($file);
      $img_ext '.png';  // Extension de l'image
  }
  // Création de la vignette
  $img_thumb imagecreatetruecolor($img_thumb_width$img_thumb_height);
   // Insertion de l'image de base redimensionnée
  imagecopyresized($img_thumb$img0000$img_thumb_width,
                                                 $img_thumb_height,
                                                 $img_width,
                                                 $img_height);
$file_name basename($img_file$img_ext); //Nom du fichier sans son extension
// Chemin complet du fichier de la vignette
  $img_thumb_name $dir.$file_name.REW.$exp_img_thumb_width[0].'px'.$img_ext;
  
  // Sélection de la vignette créée
  switch($img_type){
    case 2:
    // Enregistrement d'une image jpeg avec une compression de 75 par défaut
      imagejpeg($img_thumb$img_thumb_name);
      break;
    case 3:
      imagepng($img_thumb$img_thumb_name); // Enregistrement d'une image png
  }
  
  return $img_thumb_name// Chemin de la vignette
}
?>

 

Fonctions du code

: Retourne le chemin canonique absolu - (PHP 4, PHP 5)
: Renvoie le nom du dossier - (PHP 4, PHP 5)
: Retourne la taille d'une image - (PHP 4, PHP 5)
: Coupe une chaîne en segments - (PHP 4, PHP 5)
: Rechercher et remplacer par expression rationnelle standard - (PHP 4, PHP 5)
: Indique si le fichier est un véritable fichier - (PHP 4, PHP 5)
: Compte le nombre d'éléments d'un tableau ou le nombre de propriétés...
: Indique si le fichier est un dossier - (PHP 4, PHP 5)
: Crée un dossier - (PHP 4, PHP 5)
: Crée une nouvelle image à partir d'un fichier ou d'une URL - (PHP 4, PHP 5)
: Crée une nouvelle image à partir d'un fichier ou d'une URL - (PHP 4, PHP 5)
: Crée une nouvelle image en couleurs vraies - (PHP 4 >= 4.0.6, PHP 5)
: Copie et redimensionne une partie d'une image - (PHP 4, PHP 5)
: Sépare le nom du fichier et le nom du dossier - (PHP 4, PHP 5)
: Envoie une image JPEG vers un navigateur ou un fichier - (PHP 4, PHP 5)
: Envoie une image PNG vers un navigateur ou un fichier - (PHP 4, PHP 5)
Commentaire
il est préférable d'utiliser la fonction php imagecopyresampled à la place de imagecopyresized car elle donne un meilleur résultat lors de la réduction de taille.
 
Ajouter un commentaire
Code de sécurité

Attention: Les champs marqués d'une étoile * sont obligatoires
 

Connexion

 
 

Images

 
 

PHP

 
 
        Publicité