FAQ PHPConsultez toutes les FAQ

Nombre d'auteurs : 68, nombre de questions : 580, dernière mise à jour : 29 juillet 2013 

 
OuvrirSommaireBibliothèques, extensionsImages

Il est souvent utile de créer de petites vignettes sur la base de photos de plus grande taille, sous la forme d'aperçu dans une galerie de photos par exemple. Suivant les instructions utilisées, la qualité de l'image réduite peut être discutable, voir carrément mauvaise. La fonction ci-dessous génère une vignette de bonne qualité.

Le code

 
Sélectionnez
function thumbnail($file, $maxWidth, $maxHeight)
{
    //Créer une image à partir de $file
    $img = imagecreatefromjpeg($file);

    //Dimensions de l'image
    $imgWidth = imagesx($img);
    $imgHeight = imagesy($img);

    //Facteur largeur/hauteur des dimensions max
    $whFact = $maxWidth/$maxHeight;

    //Facteur largeur/hauteur de l'original
    $imgWhFact = $imgWidth/$imgHeight;

    //fixe les dimensions du thumb
    if($whFact < $imgWhFact)
    {
        //Si largeur déterminante
        $thumbWidth  = $maxWidth;
        $thumbHeight = $thumbWidth/$imgWhFact;
    }
    else
    {
        //Si hauteur déterminante
        $thumbHeight = $maxHeight;
        $thumbWidth = $thumbHeight*$imgWhFact;
    }

    //Crée le thumb (image réduite)
    $imgThumb = imagecreatetruecolor($thumbWidth, $thumbHeight);

    //Insère l'image de base redimensionnée
    imagecopyresized($imgThumb, $img, 0, 0, 0, 0, $thumbWidth, $thumbHeight, $imgWidth, $imgHeight);

    //Crée le fichier thumb
    imagejpeg($imgThumb, "thumb_".$file);

    //Renvoie le thumb créé
    return $imgThumbName;
}

La fonction ImageCreateTruecolor() a été introduite dans la version 2.0 de la librairie gd, elle ne sera donc pas disponible si vous disposez d'une version antérieure. Dans ce cas, il faut utiliser la fonction ImageCreate().

Attention : La génération des thumbnails à chaque chargement de page n'est pas conseillée car elle consomme beaucoup de ressources.

Mis à jour le 28 août 2007  par Eric Berger

Lien : Tutoriel : La manipulation d'images avec la librairie GD, par Michaël

C'est possible principalement de deux manières :
  • À l'aide d'un webservice ;
  • En utilisant un objet COM pour manipuler Internet Explorer (uniquement sous Windows).

Pour la 2° solution, il faut avoir chargé l'extension COM ainsi qu'avoir activé l'option "Autoriser le service à interagir avec le Bureau" dans les propriétés du service Apache, par exemple dans : Démarrer / Paramètres / Panneau de configuration / Outils d'administration / Services / Apache2.

Voici le script à utiliser :
Sélectionnez
<?php

$browser = new COM("InternetExplorer.Application");

//$browser->Width = 640;
//$browser->Height = 480;
//$browser->FullScreen = TRUE;

$browser->Visible = TRUE;
$browser->Navigate("http://php.developpez.com/");
while($browser->Busy)
{
    com_message_pump(4000);
}

$im = imagegrabwindow($browser->HWND); // Uniquement sous Windows
if($im)
{
    header('Content-Type: image/png');
    imagepng($im);
}

$browser->Quit();

?>
Créé le 27 juillet 2007  par Guillaume Rossolini

Lien : Webservices : Générer la miniature d'une page Web
Lien : MSDN : InternetExplorer Object
Lien : Comment installer une extension pour PHP ?

En essayant d'utiliser la bibiothèque GD2 avec EasyPHP vous avez l'erreur suivante :

 
Sélectionnez
Function registration failed - dupilcate name - imagetruecolortopalette

Modifier le fichier de configuration php.ini pour activer gd2.dll et désactiver gd.dll.

Créé le 4 mai 2003  par Cyberzoide
  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2003 Developpez.com Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.