コード例 #1
0
ファイル: filtres_images_mini.php プロジェクト: JLuc/SPIP
/**
 * Réduit les images à une taille maximale (chevauchant un rectangle)
 *
 * L'image possède un côté réduit dans les dimensions indiquées et
 * l'autre côté (hauteur ou largeur) de l'image peut être plus grand
 * que les dimensions du rectangle.
 * 
 * Alors que image_reduire produit la plus petite image tenant dans un
 * rectangle, image_passe_partout produit la plus grande image qui
 * remplit ce rectangle.
 *
 * @example
 *     ```
 *     [(#FICHIER
 *       |image_passe_partout{70,70}
 *       |image_recadre{70,70,center})]
 *     ```
 * @link http://www.spip.net/4562
 * @see image_reduire()
 *
 * @param string $img
 *     Chemin de l'image ou texte
 * @param int $taille_x
 *     - Largeur maximale en pixels désirée
 *     - -1 prend la taille de réduction des vignettes par défaut
 *     - 0 la taille s'adapte à la largeur
 * @param int $taille_y
 *     - Hauteur maximale en pixels désirée
 *     - -1 pour prendre pareil que la largeur
 *     - 0 la taille s'adapte à la hauteur
 * @param bool $force
 * @param bool $cherche_image
 * @param string $process
 * @return string
 *     Code HTML de l'image ou du texte.
**/
function image_passe_partout($img, $taille_x = -1, $taille_y = -1, $force = false, $cherche_image = false, $process = 'AUTO')
{
    if (!$img) {
        return '';
    }
    list($hauteur, $largeur) = taille_image($img);
    if ($taille_x == -1) {
        $taille_x = isset($GLOBALS['meta']['taille_preview']) ? $GLOBALS['meta']['taille_preview'] : 150;
    }
    if ($taille_y == -1) {
        $taille_y = $taille_x;
    }
    if ($taille_x == 0 and $taille_y > 0) {
        $taille_x = 1;
    } elseif ($taille_x > 0 and $taille_y == 0) {
        $taille_y = 1;
    } elseif ($taille_x == 0 and $taille_y == 0) {
        return '';
    }
    list($destWidth, $destHeight, $ratio) = ratio_passe_partout($largeur, $hauteur, $taille_x, $taille_y);
    $fonction = array('image_passe_partout', func_get_args());
    return process_image_reduire($fonction, $img, $destWidth, $destHeight, $force, $cherche_image, $process);
}
コード例 #2
0
ファイル: filtres_images_mini.php プロジェクト: rhertzog/lcs
function image_passe_partout($img,$taille_x = -1, $taille_y = -1,$force = false,$cherche_image=false,$process='AUTO'){
	if (!$img) return '';
	list ($hauteur,$largeur) = taille_image($img);
	if ($taille_x == -1)
		$taille_x = isset($GLOBALS['meta']['taille_preview'])?$GLOBALS['meta']['taille_preview']:150;
	if ($taille_y == -1)
		$taille_y = $taille_x;

	if ($taille_x == 0 AND $taille_y > 0)
		$taille_x = 1; # {0,300} -> c'est 300 qui compte
	elseif ($taille_x > 0 AND $taille_y == 0)
		$taille_y = 1; # {300,0} -> c'est 300 qui compte
	elseif ($taille_x == 0 AND $taille_y == 0)
		return '';

	list($destWidth,$destHeight,$ratio) = ratio_passe_partout($largeur,$hauteur,$taille_x,$taille_y);
	$fonction = array('image_passe_partout', func_get_args());
	return process_image_reduire($fonction,$img,$destWidth,$destHeight,$force,$cherche_image,$process);
}