par
pacphil » 14 févr. 2012, 20:56
Bonjour j'ai une soucis avec une fonction miniature une personne serait elle m'éclairer svp , votre aide serait la bien venue .
voici la fonction
<?php
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
}
$img_thumb_fact_width_height = $img_max_width / $img_max_height; // Facteur largeur par hauteur des dimensions max de la vignette
$img_fact_width_height = $img_width / $img_height; // Facteur largeur par hauteur de l'original
// 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 de la vignette
} else {
$img_thumb_height = $img_max_height; // Hauteur de la vignette
$img_thumb_width = $img_thumb_height * $img_fact_width_height; // Largeur de la vignette
}
// Vérification de la présence de la vignette
$img_file_temp = MINI.$img_file; // Adresse de l'image temporaire de base
$exp_img_thumb_width = explode(',', $img_thumb_width); // Découpe de la taille de la vignette
$img_thumb_name = preg_replace('/(.+)\.(.+)/U', '$1'.REW.$exp_img_thumb_width[0].'px.$2', $img_file_temp); //Adresse de la vignette
if (is_file($img_thumb_name) ) {
return $img_thumb_name;
}
// Création du dossier de l'image
$exp_dir = explode('/', MINI.$dir); // Découpe du chemin
$dir = '';
for ($a = 0; $a < count($exp_dir) -1; $a++) {
$dir .= $exp_dir[$a].'/'; // Chemin du cache
// Détermination du chemin
if (!is_dir($dir)) {
mkdir($dir); // Création du dossier
}
}
// Sélection des variables selon l'extension de l'image
switch ($img_type) {
case 2:
$img = imagecreatefromjpeg($file); // Création d'une nouvelle image jpeg à partir du fichier
$img_ext = '.jpg'; // Extension de l'image
break;
case 3:
$img = imagecreatefrompng($file); // Création d'une nouvelle image png à partir du fichier
$img_ext = '.png'; // Extension de l'image
}
$img_thumb = imagecreatetruecolor($img_thumb_width, $img_thumb_height); // Création de la vignette
Imagecopyresized($img_thumb, $img, 0, 0, 0, 0, $img_thumb_width, $img_thumb_height, $img_width, $img_height); // Insertion de l'image de base redimensionnée
$file_name = basename($img_file, $img_ext); // Nom du fichier sans son extension
$img_thumb_name = $dir.$file_name.$img_ext; // Chemin complet du fichier de la vignette
// Sélection de la vignette créée
switch($img_type){
case 2:
imagejpeg($img_thumb, $img_thumb_name); // Enregistrement d'une image jpeg avec une compression de 75 par défaut
break;
case 3:
imagepng($img_thumb, $img_thumb_name); // Enregistrement d'une image png
}
return $img_thumb_name;
}
?>
Et voici les erreurs
Warning: getimagesize() [function.getimagesize]: Filename cannot be empty in C:\Program Files\EasyPHP-5.3.8.1\hesbaye\function_mini.php on line 6
Warning: Division by zero in C:\Program Files\EasyPHP-5.3.8.1\hesbaye\function_mini.php on line 20
Warning: Division by zero in C:\Program Files\EasyPHP-5.3.8.1\hesbaye\function_mini.php on line 21
Notice: Use of undefined constant MINI - assumed 'MINI' in C:\Program Files\EasyPHP-5.3.8.1\hesbaye\function_mini.php on line 33
Notice: Use of undefined constant REW - assumed 'REW' in C:\Program Files\EasyPHP-5.3.8.1\hesbaye\function_mini.php on line 35
Notice: Use of undefined constant MINI - assumed 'MINI' in C:\Program Files\EasyPHP-5.3.8.1\hesbaye\function_mini.php on line 41
Warning: imagecreatetruecolor() [function.imagecreatetruecolor]: Invalid image dimensions in C:\Program Files\EasyPHP-5.3.8.1\hesbaye\function_mini.php on line 64
Notice: Undefined variable: img in C:\Program Files\EasyPHP-5.3.8.1\hesbaye\function_mini.php on line 65
Warning: imagecopyresized() expects parameter 1 to be resource, boolean given in C:\Program Files\EasyPHP-5.3.8.1\hesbaye\function_mini.php on line 65
Notice: Undefined variable: img_ext in C:\Program Files\EasyPHP-5.3.8.1\hesbaye\function_mini.php on line 66
Notice: Undefined variable: img_ext in C:\Program Files\EasyPHP-5.3.8.1\hesbaye\function_mini.php on line 67
Merci d'avance
Bonjour j'ai une soucis avec une fonction miniature une personne serait elle m'éclairer svp , votre aide serait la bien venue .
voici la fonction
[php]
<?php
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
}
$img_thumb_fact_width_height = $img_max_width / $img_max_height; // Facteur largeur par hauteur des dimensions max de la vignette
$img_fact_width_height = $img_width / $img_height; // Facteur largeur par hauteur de l'original
// 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 de la vignette
} else {
$img_thumb_height = $img_max_height; // Hauteur de la vignette
$img_thumb_width = $img_thumb_height * $img_fact_width_height; // Largeur de la vignette
}
// Vérification de la présence de la vignette
$img_file_temp = MINI.$img_file; // Adresse de l'image temporaire de base
$exp_img_thumb_width = explode(',', $img_thumb_width); // Découpe de la taille de la vignette
$img_thumb_name = preg_replace('/(.+)\.(.+)/U', '$1'.REW.$exp_img_thumb_width[0].'px.$2', $img_file_temp); //Adresse de la vignette
if (is_file($img_thumb_name) ) {
return $img_thumb_name;
}
// Création du dossier de l'image
$exp_dir = explode('/', MINI.$dir); // Découpe du chemin
$dir = '';
for ($a = 0; $a < count($exp_dir) -1; $a++) {
$dir .= $exp_dir[$a].'/'; // Chemin du cache
// Détermination du chemin
if (!is_dir($dir)) {
mkdir($dir); // Création du dossier
}
}
// Sélection des variables selon l'extension de l'image
switch ($img_type) {
case 2:
$img = imagecreatefromjpeg($file); // Création d'une nouvelle image jpeg à partir du fichier
$img_ext = '.jpg'; // Extension de l'image
break;
case 3:
$img = imagecreatefrompng($file); // Création d'une nouvelle image png à partir du fichier
$img_ext = '.png'; // Extension de l'image
}
$img_thumb = imagecreatetruecolor($img_thumb_width, $img_thumb_height); // Création de la vignette
Imagecopyresized($img_thumb, $img, 0, 0, 0, 0, $img_thumb_width, $img_thumb_height, $img_width, $img_height); // Insertion de l'image de base redimensionnée
$file_name = basename($img_file, $img_ext); // Nom du fichier sans son extension
$img_thumb_name = $dir.$file_name.$img_ext; // Chemin complet du fichier de la vignette
// Sélection de la vignette créée
switch($img_type){
case 2:
imagejpeg($img_thumb, $img_thumb_name); // Enregistrement d'une image jpeg avec une compression de 75 par défaut
break;
case 3:
imagepng($img_thumb, $img_thumb_name); // Enregistrement d'une image png
}
return $img_thumb_name;
}
?>
[/php]
Et voici les erreurs
[quote]Warning: getimagesize() [function.getimagesize]: Filename cannot be empty in C:\Program Files\EasyPHP-5.3.8.1\hesbaye\function_mini.php on line 6
Warning: Division by zero in C:\Program Files\EasyPHP-5.3.8.1\hesbaye\function_mini.php on line 20
Warning: Division by zero in C:\Program Files\EasyPHP-5.3.8.1\hesbaye\function_mini.php on line 21
Notice: Use of undefined constant MINI - assumed 'MINI' in C:\Program Files\EasyPHP-5.3.8.1\hesbaye\function_mini.php on line 33
Notice: Use of undefined constant REW - assumed 'REW' in C:\Program Files\EasyPHP-5.3.8.1\hesbaye\function_mini.php on line 35
Notice: Use of undefined constant MINI - assumed 'MINI' in C:\Program Files\EasyPHP-5.3.8.1\hesbaye\function_mini.php on line 41
Warning: imagecreatetruecolor() [function.imagecreatetruecolor]: Invalid image dimensions in C:\Program Files\EasyPHP-5.3.8.1\hesbaye\function_mini.php on line 64
Notice: Undefined variable: img in C:\Program Files\EasyPHP-5.3.8.1\hesbaye\function_mini.php on line 65
Warning: imagecopyresized() expects parameter 1 to be resource, boolean given in C:\Program Files\EasyPHP-5.3.8.1\hesbaye\function_mini.php on line 65
Notice: Undefined variable: img_ext in C:\Program Files\EasyPHP-5.3.8.1\hesbaye\function_mini.php on line 66
Notice: Undefined variable: img_ext in C:\Program Files\EasyPHP-5.3.8.1\hesbaye\function_mini.php on line 67[/quote]
Merci d'avance