Valider e7b0daad rédigé par davux's avatar davux
Parcourir les fichiers

Permettre la surcharge de la qualité d'image lors des traitements

On définit 4 constantes qui représentent le pourcentage de qualité à
appliquer lors des traitements d'images :
 - _IMG_QUALITE
 - _IMG_GD_QUALITE (existait deja)
 - _IMG_CONVERT_QUALITE
 - _IMG_IMAGICK_QUALITE

Ainsi, il suffit de surcharger _IMG_QUALITE dans mes_options pour impacter
toutes les valeurs, mais il reste possible de les définir au cas par cas.

La valeur par défaut est 85, sauf pour convert qui utilise historiquement
une qualité de 75. Cette incohérence n'est pas documentée, alors on la
préserve en attendant de savoir si elle est volontaire ou non.
parent d0e51fa8
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+3 −3
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -532,7 +532,7 @@ function _image_creer_vignette($valeurs, $maxWidth, $maxHeight, $process='AUTO',
		// imagemagick en ligne de commande
		else if ($process == 'convert') {
			define('_CONVERT_COMMAND', 'convert');
			define ('_RESIZE_COMMAND', _CONVERT_COMMAND.' -quality 85 -resize %xx%y! %src %dest');
			define ('_RESIZE_COMMAND', _CONVERT_COMMAND.' -quality '._IMG_CONVERT_QUALITE.' -resize %xx%y! %src %dest');
			$vignette = $destination.".".$format_sortie;
			$commande = str_replace(
				array('%x', '%y', '%src', '%dest'),
@@ -555,7 +555,7 @@ function _image_creer_vignette($valeurs, $maxWidth, $maxHeight, $process='AUTO',
		if ($process == 'imagick') {
			$vignette = "$destination.".$format_sortie;
			$handle = imagick_readimage($image);
			imagick_resize($handle, $destWidth, $destHeight, IMAGICK_FILTER_LANCZOS, 0.75);
			imagick_resize($handle, $destWidth, $destHeight, IMAGICK_FILTER_LANCZOS, _IMG_IMAGICK_QUALITE / 100);
			imagick_write($handle, $vignette);
			if (!@file_exists($vignette)) {
				spip_log("echec imagick sur $vignette");
+7 −1
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -1409,6 +1409,13 @@ function spip_initialisation_suite() {
	define('_IMG_MAX_WIDTH', 0); # largeur en pixels
	define('_IMG_MAX_HEIGHT', 0); # hauteur en pixels

	// Qualite des images calculees automatiquement. C'est un nombre entre 0 et 100, meme pour imagick (on ramene a 0..1 par la suite)
        if (!defined('_IMG_QUALITE')) define('_IMG_QUALITE', 85); # valeur par defaut
        if (!defined('_IMG_GD_QUALITE')) define('_IMG_GD_QUALITE', _IMG_QUALITE); # surcharge pour la lib GD
        if (!defined('_IMG_CONVERT_QUALITE')) define('_IMG_CONVERT_QUALITE', _IMG_QUALITE); # surcharge pour imagick en ligne de commande
	// Historiquement la valeur pour imagick semble differente. Si ca n'est pas necessaire, il serait preferable de garder _IMG_QUALITE
        if (!defined('_IMG_IMAGICK_QUALITE')) define('_IMG_IMAGICK_QUALITE', 75); # surcharge pour imagick en PHP

	define('_COPIE_LOCALE_MAX_SIZE',16777216); // poids en octet

	// qq chaines standard
@@ -1476,7 +1483,6 @@ function spip_initialisation_suite() {
	# au dela de 5500000 on considere que php n'est pas limite en memoire pour cette operation
	# les configurations limitees en memoire ont un seuil plutot vers 1MPixel
	define('_IMG_GD_MAX_PIXELS', (isset($GLOBALS['meta']['max_taille_vignettes'])&&$GLOBALS['meta']['max_taille_vignettes']<5500000)?$GLOBALS['meta']['max_taille_vignettes']:0);
	define('_IMG_GD_QUALITE', 85);

	@define('_MEMORY_LIMIT_MIN',10); // en Mo
	// si on est dans l'espace prive et si le besoin est superieur a 8Mo (qui est vraiment le standard)