programmation
script_vignette - 0/p --- >>> Ø;
---
<?php /*---------------------------------------------------------------*/ /* Titre : Création d'images miniatures URL : https://phpsources.net/code_s.php?id=390 Auteur : medium69 Date édition : 18 Mai 2008 Date mise à jour : 12 Oct 2019 Rapport de la maj: - fonctionnement du code vérifié - correction du code - amélioration du code */ /*---------------------------------------------------------------*/
/* ************************************************************* - 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 ******************************************************************** */
define("REW", "200"); // nombre de pixel dans le nom de l'image define("DOSS_TEMP", "tmp"); // le répertoire qui va etre créé
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($dir, 0755, true); // 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 imagecopyresampled($img_thumb, $img, 0, 0, 0, 0, $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 } ?>
Exemple :
<?php
vignette('image.png', 100, 100); ?>
function_getimagesize - 0/p --- >>> Ø;
---
getimagesize
(PHP 4, PHP 5, PHP 7, PHP 8)
getimagesize — Retourne la taille d'une image
Description ¶
getimagesize ( string $filename , array &$image_info = null ) : array|false
getimagesize() détermine la taille de toute image supportée fournie et en retourne les dimensions, le type d'image et une chaîne type height/width à placer dans une balise HTML IMG normale et le type de contenu HTTP correspondant.
getimagesize() peut également retourner plus d'informations dans le paramètre image_info.
Attention
Cette fonction s'attend à ce que filename soit un fichier image valide. Si un fichier non image est fourni, il peut être détecté de manière incorrecte en tant qu'image et la fonction retournera avec succès, mais le tableau peut contenir des valeurs absurdes.
N'utilisez pas getimagesize()() pour vérifier qu'un fichier donné est une image valide. Utilisez à la place une solution prévu pour cela telles que l'extension FileInfo.
Note: Notez que JPC et JP2 sont capables d'avoir des composants avec une profondeur de bit différente. Dans ce cas, la valeur de "bits" est la plus grande profondeur de bit rencontrée. De même, les fichiers JP2 disposent du support de multiple JPEG 2000 codestreams. Dans ce cas, getimagesize() retourne les valeurs pour le premier codestream rencontré à la racine du fichier.
Note: Les informations sur les icônes sont récupérées depuis l'icône possédant le plus haut débit.
Note: Les images GIF consistant d'un ou plusieurs cadres, où chaque cadre peut occuper uniquement une partie de l'image. La taille de l'image qui est rapporté par getimagesize() est la taille globale (lu depuis le descripteur logique de l'écran).
Liste de paramètres ¶
filename
Ce paramètre spécifie le fichier dont vous voulez récupérer les informations. Il peut être un fichier local ou (suivant la configuration), un fichier distant en utilisant un des flux supportés.
image_info
Ce paramètre optionnel permet d'extraire des informations supplémentaires du fichier image. Actuellement, cette option va retourner différents marqueurs JPG APP dans un tableau associatif. Certains programmes utilisent ces marqueur APP pour préciser les informations dans les balises HTML. Un marqueur commun est le marqueur APP13, décrit à » IPTC. Vous pouvez utiliser la fonction iptcparse() pour analyser ce marqueur, et obtenir des informations intelligibles.
Note:
image_info supporte uniquement les fichiers JFIF.
Valeurs de retour ¶
Retourne un tableau contenant jusqu'à 7 éléments. Tous les types d'images n'incluent pas les éléments channels et bits.
L'index 0 contient la largeur. L'index 1 contient la hauteur.
Note:
Certains formats peuvent ne contenir aucune image, ou bien plusieurs. Dans ces cas-là, getimagesize() peut ne pas être capable de déterminer correctement la taille de l'image. getimagesize() retourne alors zéro comme taille de hauteur et largeur.
L'index 2 est une constante parmi IMAGETYPE_XXX constants, indiquant le type de l'image.
L'index 3 contient la chaîne à placer dans les balises IMG : height="xxx" width="yyy".
mime correspond au type MIME d'une image. Cette information peut être utilisée pour envoyer l'en-tête HTTP Content-type correct :
Exemple #1 getimagesize() et types MIME
<?php $size = getimagesize($filename); $fp = fopen($filename, "rb"); if ($size && $fp) { header("Content-type: {$size['mime']}"); fpassthru($fp); exit; } else { // error } ?>
channels sera 3 pour des images RGB et 4 pour des images CMYK.
bits est le nombre d'octets pour chaque couleur.
Cependant, la présence des valeurs de channels et de bits peut mener à la confusion. Par exemple, une image GIF utilise toujours trois canaux par pixel, mais le nombre de bits par pixel ne peut être calculé dans le cas d'une image animée GIF ayant une table de couleur globale.
Si une erreur survient, false est retourné. Erreurs / Exceptions ¶
Si l'accès à filename est impossible, getimagesize() générera une erreur de niveau E_WARNING. Si une erreur survient lors de la lecture, getimagesize() générera une erreur de niveau E_NOTICE.
Historique ¶ Version Description 7.1.0 Ajout du support de WebP. Exemples ¶
Exemple #2 Exemple avec getimagesize() <?php list($width, $height, $type, $attr) = getimagesize("img/flag.jpg"); echo "<img src=\"img/flag.jpg\" $attr alt=\"Exemple avec getimagesize()\" />"; ?>
<?php list($width, $height, $type, $attr) = getimagesize("img/flag.jpg"); echo "<img src=\"img/flag.jpg\" $attr alt=\"Exemple avec getimagesize()\" />"; ?>
Exemple #3 getimagesize() avec une URL <?php $size = getimagesize("http://www.example.com/gifs/logo.gif");
// Si le nom du fichier comporte des espaces, encodez-le ! $size = getimagesize("http://www.example.com/gifs/lo%20go.gif");
?>
Exemple #4 getimagesize() qui retourne IPTC <?php $size = getimagesize("testimg.jpg", $info); if (isset($info["APP13"])) { $iptc = iptcparse($info["APP13"]); var_dump($iptc); } ?> Notes ¶
Note:
Cette fonction ne nécessite pas la bibliothèque GD.
Voir aussi ¶
image_type_to_mime_type() - Lit le Mime-Type d'un type d'image exif_imagetype() - Détermine le type d'une image exif_read_data() - Lit les en-têtes EXIF dans les images exif_thumbnail() - Récupère la miniature d'une image imagesx() - Retourne la largeur d'une image imagesy() - Retourne la hauteur de l'image
script_img_format - 0/p --- >>> Ø;
---
<?php /*---------------------------------------------------------------*/ /* Titre : Connaitre la taille d'une image et son format URL : https://phpsources.net/code_s.php?id=116 Auteur : Iron Date édition : 11 Mars 2005 Date mise à jour : 31 Oct 2019 Rapport de la maj: - fonctionnement du code vérifié */ /*---------------------------------------------------------------*/
$chemin = ''; // chemin de l'image $infos_image = @getImageSize($chemin); // info sur la dimension de l'image
// '@' est placé devant la fonction getImageSize()pour empêcher l'affichage // des erreurs si l'image est absente. //dimension $largeur = $infos_image[0]; // largeur de l'image $hauteur = $infos_image[1]; // hauteur de l'image $type = $infos_image[2]; // Type de l'image $html = $infos_image[3]; // info html de type width="468" height="60"
echo $largeur; // affiche la hauteur echo $hauteur; // affiche la largeur echo $type; // Type de l'image 1 = GIF, 2 = JPG,3 = PNG, 4 = SWF, 5 = PSD, // 6 = BMP, 7 = TIFF, 8 = TIFF, 9 = JPC, 10 = JP2, 11 = JPX, // 12 = JB2, 13 = SWC, 14 = IFF.... echo '<img src="'.$chemin.'" alt="Exemple de getimagesize()" '.$html.' />';
?>
|