goa103
Membre récent

Hors-Ligne
Messages: 8

Hello Boy!
|
Salut Max,
Tu dois utiliser les fonctions "truecolor" pour que l'image ne soit pas altérée. En effet l'ancienne version de GD ne supportant pas le truecolor. Et dans le cas d'une image JPEG ou PNG... Le résultat est affreux car converti en 256 couleurs ! Tu dois donc utiliser "imagecreatetruecolor" pour créer ta miniature (thumb) et non pas "imagecreate". "imagecopyresized" c'est bien mais "imagecopyresampled" c'est mieux, bien que plus lent. Normalement tu ne dois pas générer tes miniatures à la volée, c'est pour ça que l'utilisation de "resampled" n'est pas si pénalisante.
Si ca peut t'aider voici le code source complet d'un générateur de miniature, comme tu peux le voir j'ai utilisé truecolor et resampled. Une fois la miniature générée à partir de l'image originale, je peux l'utiliser sans problème sur mon site:
/** AdminGalleryThumbCreatorCreateThumb
@param urlPathImage Chemin des images
@param urlThumbFolder Créer les miniatures dans un sous-répertoire
@param sFilename Image filename */
function AdminGalleryThumbCreatorCreateThumb ($urlPathImage, $urlThumbFolder, $sFilename) { // Est-ce un JPEG ? $sFullPath = $urlPathImage . "/" . $sFilename; $im = @imagecreatefromjpeg ($sFullPath); if ($im != false) { ?> (<B>jpeg</B>) src: <CODE><?= $sFullPath ?></CODE> <?PHP // Créer le thumb folder @mkdir ($urlPathImage . "/" . $urlThumbFolder, 0700); // Créer la miniature $nWidth = imagesx ($im); $nHeight = imagesy ($im); $nThumbSize = 64; if ($nWidth < $nHeight) { $nDestWidth = (int) ((float) $nWidth * ((float) $nThumbSize / (float) $nHeight)); $nDestHeight = $nThumbSize; } else { $nDestWidth = $nThumbSize; $nDestHeight = (int) ((float) $nHeight * ((float) $nThumbSize / (float) $nWidth)); } // 2002-09-29 19:56:11 jmmolina bug fix Thumb size // thumb has the size of the original image arf arf :) (imagecreatetruecolor wrong param) //$imThumb = imagecreatetruecolor ($nWidth, $nHeight); $imThumb = imagecreatetruecolor ($nDestWidth, $nDestHeight);
// Copy and resize part of an image with resampling ?>dest <?= $nDestWidth ?>px * <?= $nDestHeight ?>px: <?PHP imagecopyresampled ($imThumb, $im, 0, 0, 0, 0, $nDestWidth, $nDestHeight, $nWidth, $nHeight); // Ecriture sur le disque $sThumbFilename = $urlPathImage . "/" . $urlThumbFolder . "/" . $sFilename; ?><CODE><?= $sThumbFilename ?></CODE><?PHP imagejpeg ($imThumb, $sThumbFilename);
imagedestroy ($im); imagedestroy ($imThumb); } }
|
|
JM |