Salut,
Je viens de faire une nouvelle fonction graphique: image_joindre.
Elle permet de joindre deux images dans une seule image, placées l'une à côté de l'autre. On peut placer la deuxième image à droite, à gauche, en haut ou en bas de la première image.
L'intérêt principal de cette fonction est de permettre la gestion de rollovers basés sur le décalage d'une image unique, ce qui évite les effets pénibles liés aux images qui ne s'affichent pas ou qui mettent du temps à se charger.
Je joins la fonction ci-dessous, pour que vous voyez que ça n'est pas de la haute technologie (donc risque de bug faible).
=> Est-ce que je l'installe directement dans le core pour la 2.0.4, ou bien est-ce qu'on joue super-prudent et je la sors d'abord en plugin (et dans le core de la version dev)?
ARNO*
function image_joindre ($im, $masque, $dir="right") {
$masque = find_in_path($masque);
$pos = md5(serialize($dir).@filemtime($masque));
$fonction = array('image_masque', func_get_args());
$image = image_valeurs_trans($im, "joindre-$masque-$pos", "png", $fonction);
if (!$image) return("");
$mask = image_valeurs_trans($masque,"");
if (!$mask) return("");
$x_i = $image["largeur"];
$y_i = $image["hauteur"];
$x_m = $mask["largeur"];
$y_m = $mask["hauteur"];
if ($dir == "right" OR $dir == "left") {
$x_f = $x_i + $x_m;
$y_f = max($y_i, $y_m);
} else {
$x_f = max($x_i, $x_m);
$y_f = $y_i + $y_m;
}
$im = $image["fichier"];
$dest = $image["fichier_dest"];
$creer = $image["creer"];
if ($creer) {
$im_f = imagecreatetruecolor($x_f, $y_f);
@imagealphablending($im_f, false);
@imagesavealpha($im_f,true);
$color_t = ImageColorAllocateAlpha( $im_f, 128, 128, 128 , 127 );
imagefill ($im_f, 0, 0, $color_t);
$im1 = $image["fonction_imagecreatefrom"]($im);
$im2 = $mask["fonction_imagecreatefrom"]($masque);
if ($dir == "right") {
imagecopy ( $im_f, $im1, 0, 0, 0, 0, $x_i, $y_i);
imagecopy ( $im_f, $im2, $x_i, 0, 0, 0, $x_m, $y_m);
} else if ($dir == "left") {
imagecopy ( $im_f, $im1, $x_m, 0, 0, 0, $x_i, $y_i);
imagecopy ( $im_f, $im2, 0, 0, 0, 0, $x_m, $y_m);
} else if ($dir == "bottom") {
imagecopy ( $im_f, $im1, 0, 0, 0, 0, $x_i, $y_i);
imagecopy ( $im_f, $im2, 0, $y_i, 0, 0, $x_m, $y_m);
} else if ($dir == "top") {
imagecopy ( $im_f, $im1, 0, $y_m, 0, 0, $x_i, $y_i);
imagecopy ( $im_f, $im2, 0, 0, 0, 0, $x_m, $y_m);
}
image_gd_output($im_f,$image);
}
return image_ecrire_tag($image,array('src'=>$dest,'width'=>$x_f,'height'=>$y_f));
}