Valider 9bf89051 rédigé par cerdic's avatar cerdic Validation de Gitea
Parcourir les fichiers

Une fonction infos_image() qui fait un peu plus que taille_image() en...

Une fonction infos_image() qui fait un peu plus que taille_image() en recupererant en meme temps le poids du fichier si possible (0 sinon), y compris en faisant une copie locale. Le filtre historique taille_image() utilise cette fonction et on introduit un filtre poids_image() que l'on utilise dans formulaires/inc-apercu-logo.html pour pouvoir afficher le poids des logos distants egalement
parent 190d73cd
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+47 −11
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -578,20 +578,23 @@ function image_filtrer($args) {
}

/**
 * Retourne les tailles d'une image
 * Retourne les informations d'une image
 *
 * Pour les filtres `largeur` et `hauteur`
 * Pour les filtres `largeur` et `hauteur` `taille_image` et `poids_image`
 *
 * @param string $img
 *     Balise HTML `<img ... />` ou chemin de l'image (qui peut être une URL distante).
 * @return array
 *     Liste (hauteur, largeur) en pixels
 *     largeur
 *     hauteur
 *     poids
 **/
function taille_image($img, $force_refresh = false) {
function infos_image($img, $force_refresh = false) {

	static $largeur_img = [], $hauteur_img = [];
	static $largeur_img = [], $hauteur_img = [], $poids_img = [];
	$srcWidth = 0;
	$srcHeight = 0;
	$srcSize = null;

	$src = extraire_attribut($img, 'src');

@@ -613,23 +616,29 @@ function taille_image($img, $force_refresh = false) {
		$src = substr($src, 0, $p);
	}

	$srcsize = false;
	$imagesize = false;
	if (isset($largeur_img[$src]) and !$force_refresh) {
		$srcWidth = $largeur_img[$src];
	}
	if (isset($hauteur_img[$src]) and !$force_refresh) {
		$srcHeight = $hauteur_img[$src];
	}
	if (!$srcWidth or !$srcHeight) {
	if (isset($poids_img[$src]) and !$force_refresh) {
		$srcSize = $poids_img[$src];
	}
	if (!$srcWidth or !$srcHeight or is_null($srcSize)) {
		if (
			file_exists($src)
			and $srcsize = spip_getimagesize($src)
			and $imagesize = spip_getimagesize($src)
		) {
			if (!$srcWidth) {
				$largeur_img[$src] = $srcWidth = $srcsize[0];
				$largeur_img[$src] = $srcWidth = $imagesize[0];
			}
			if (!$srcHeight) {
				$hauteur_img[$src] = $srcHeight = $srcsize[1];
				$hauteur_img[$src] = $srcHeight = $imagesize[1];
			}
			if (!$srcSize){
				$poids_img[$src] = filesize($src);
			}
		}
		elseif (strpos($src, '<svg') !== false) {
@@ -642,6 +651,9 @@ function taille_image($img, $force_refresh = false) {
				if (!$srcHeight) {
					$hauteur_img[$src] = $srcHeight = $height;
				}
				if (!$srcSize){
					$poids_img[$src] = $srcSize = strlen($src);
				}
			}
		}
		// $src peut etre une reference a une image temporaire dont a n'a que le log .src
@@ -657,12 +669,36 @@ function taille_image($img, $force_refresh = false) {
			if (!$srcHeight) {
				$hauteur_img[$src] = $srcHeight = $valeurs['hauteur_dest'];
			}
			if (!$srcSize){
				$poids_img[$src] = $srcSize = 0;
			}
		}
	}

	return ['hauteur' => $srcHeight, 'largeur' => $srcWidth, 'poids' => $srcSize];
}

	return [$srcHeight, $srcWidth];
/**
 * Retourne les dimensions d'une image
 *
 * Pour les filtres `largeur` et `hauteur`
 *
 * @param string $img
 *     Balise HTML `<img ... />` ou chemin de l'image (qui peut être une URL distante).
 * @return array
 *     largeur
 *     hauteur
 *     poids
 **/
function poids_image($img, $force_refresh = false) {
	$infos = infos_image($img, $force_refresh);
	return $infos['poids'];
}

function taille_image($img, $force_refresh = false){
	$infos = infos_image($img, $force_refresh);
	return [$infos['hauteur'], $infos['largeur']];
}

/**
 * Retourne la largeur d'une image
+1 −1
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -3,7 +3,7 @@
	#SET{largeur,#ENV{logo}|largeur}
	#SET{hauteur,#ENV{logo}|hauteur}
	[<div class="titre">(#ENV{titre,''})</div>]
	<div class="taille"><:info_largeur_vignette{largeur_vignette=#GET{largeur},hauteur_vignette=#GET{hauteur}}:>[ - (#ENV{logo}|tester_url_absolue|?{'',#ENV{logo}|filesize|taille_en_octets})]</div>
	<div class="taille"><:info_largeur_vignette{largeur_vignette=#GET{largeur},hauteur_vignette=#GET{hauteur}}:>[ - (#ENV{logo}|poids_image|taille_en_octets)]</div>
	[(#ENV{editable}|oui)
		<input type="submit" class="btn submit supprimer" id="supprimer_#ENV{quoi,logo_on}_#ENV{objet}_#ENV{id_objet}" name="supprimer_#ENV{quoi,logo_on}" value="<:lien_supprimer|ucfirst|attribut_html:>" />
	]