Skip to content
Extraits de code Groupes Projets
Valider 8b622472 rédigé par cerdic's avatar cerdic
Parcourir les fichiers

Fix le filtre |image_imagick : on peut l'appeler avec un nom de methode de la...

Fix le filtre |image_imagick : on peut l'appeler avec un nom de methode de la classe Imagick, et l'ecriture passe bien par _image_gd_output pour gerer les images temporaires et le fichier .src associe
parent 6973ed41
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -1646,7 +1646,16 @@ function image_imagick() { ...@@ -1646,7 +1646,16 @@ function image_imagick() {
$creer = $image["creer"]; $creer = $image["creer"];
if ($creer) { if ($creer) {
if (function_exists($fonc)) { if (method_exists('Imagick',$fonc)) {
$imagick = new Imagick();
$imagick->readImage($im);
$args = $tous;
array_shift($args);
array_shift($args);
call_user_func_array([$imagick, $fonc], $args);
_image_gd_output($imagick, $image, _IMG_GD_QUALITE, '_image_imagick_write');
}
elseif (function_exists($fonc)) {
$handle = imagick_readimage($im); $handle = imagick_readimage($im);
$arr[0] = $handle; $arr[0] = $handle;
...@@ -1654,12 +1663,7 @@ function image_imagick() { ...@@ -1654,12 +1663,7 @@ function image_imagick() {
$arr[] = $tous[$i]; $arr[] = $tous[$i];
} }
call_user_func_array($fonc, $arr); call_user_func_array($fonc, $arr);
// Creer image dans fichier temporaire, puis renommer vers "bon" fichier _image_gd_output($handle, $image, _IMG_GD_QUALITE, '_image_imagick_write');
// de facon a eviter time_out pendant creation de l'image definitive
$tmp = preg_replace(",[.]png$,i", "-tmp.png", $dest);
imagick_writeimage($handle, $tmp);
rename($tmp, $dest);
ecrire_fichier($dest . ".src", serialize($image));
} }
} }
list($src_y, $src_x) = taille_image($dest); list($src_y, $src_x) = taille_image($dest);
...@@ -1668,6 +1672,44 @@ function image_imagick() { ...@@ -1668,6 +1672,44 @@ function image_imagick() {
} }
/**
* Affiche ou sauvegarde une image au format WEBP
*
* Utilise les fonctions spécifiques GD.
*
* @param resource $img
* Une ressource de type Imagick ou handle
* @param string $fichier
* Le path vers l'image (ex : local/cache-vignettes/L180xH51/image.png).
* @return bool
*
* - false si l'image créée a une largeur nulle ou n'existe pas ;
* - true si une image est bien retournée.
*/
function _image_imagick_write($imagick, $fichier, $qualite = _IMG_GD_QUALITE) {
$tmp = $fichier . ".tmp";
if (is_a($imagick, 'Imagick')) {
$ret = $imagick->writeImage($tmp);
}
else {
$ret = imagick_writeimage($imagick, $tmp);
}
if (file_exists($tmp)) {
$taille_test = getimagesize($tmp);
if ($taille_test[0] < 1) {
return false;
}
spip_unlink($fichier); // le fichier peut deja exister
@rename($tmp, $fichier);
return $ret;
}
return false;
}
// Permet de rendre une image // Permet de rendre une image
// plus claire (gamma > 0) // plus claire (gamma > 0)
// ou plus foncee (gamma < 0) // ou plus foncee (gamma < 0)
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter