Merci pour le pointeur...
pour ce qui est des chemins, ce n'est pas une erreur de la faire, détrompez-vous. J'ai fait une recherche sur google pour vous trouvez la référence:
http://fr.wikipedia.org/wiki/Uniform_Resource_Locator#Fonctionnement. Vous trouvez quelques lignes plus bas:
Nom complet de la resource à demander sur le service une fois connecté
* /chemin/d/ - chemin absolu (commençant par un /) sur le service contenant la page Web, obligatoire pour les services à chemin d’accès (par défaut ce chemin sera /).
Bon, je sais, je suis orgueilleux, vous m'excuserez...
mais bon, j'ai continué à faire des tests et j'ai découvert un problème avec les images GIFs transparents. En effet, quand les GIFs sont redimmensionner, la couleur de transparence n'est pas configurer pour l'image de sorti. J'ai déjà eu ce problème auparavant et j'avais trouvé une solution sur le Web. Je vous en fais par ici, de mon côté je patch le code.
Pour avoir accès à l'info sur les GIFs transparents, il nous faut une petite classe, sois la coller à la fin du fichier source ou inclure dans un fichier externe. Voilà la classe en question:
/*
* Class GifInfo
*
* fred at webblake dot net
*
* Little class to get extra information from a GIF file
* Usefull for finding transparent pixel
*/
class GifInfo
{
var $m_transparentRed;
var $m_transparentGreen;
var $m_transparentBlue;
var $m_signature;
var $m_version;
var $m_width;
var $m_height;
var $m_colorFlag;
var $m_backgroundIndex;
function GifInfo($filename)
{
$fp = fopen($filename,"rb");
$result = fread($fp,13);
$this->m_signature = substr($result,0,3);
$this->m_version = substr($result,3,3);
$this->m_width = ord(substr($result,6,1)) + ord(substr($result,7,1)) * 256;
$this->m_height = ord(substr($result,8,1)) + ord(substr($result,9,1)) * 256;
$this->m_colorFlag = ord(substr($result,10,1)) >> 7;
$this->m_background = ord(substr($result,11));
if($this->m_colorFlag)
{
$tableSizeNeeded = ($this->m_background + 1) * 3;
$result = fread($fp,$tableSizeNeeded);
$this->m_transparentRed = ord(substr($result,$this->m_background * 3,1));
$this->m_transparentGreen = ord(substr($result,$this->m_background * 3 + 1,1));
$this->m_transparentBlue = ord(substr($result,$this->m_background * 3 + 2,1));
}
fclose($fp);
}
}
Ensuite, il faut modifier le code du fichier directResize.php, aux alentours de la ligne 165, vous trouverez ce code:
} else if ( $img_ext == "gif" ){
$image_p = imagecreatetruecolor($img_min_w_calc, $img_min_h_calc);
$image = imagecreatefromgif($GLOBALS['modx']->config['base_path'].$img_src);
Insérez ceci tout de suite après:
// S'assurer de garder la transparence!
$gi = new GifInfo($GLOBALS['modx']->config['base_path'].$img_src);
if($gi->m_version == '89a' && $gi->m_colorFlag == 1)
{
$transparent = imagecolorallocate($image_p,
$gi->m_transparentRed,
$gi->m_transparentGreen,
$gi->m_transparentBlue);
imagefill( $image_p, 0, 0, $transparent);
imagecolortransparent( $image_p, $transparent );
}