119,6 → 119,7 |
} |
|
public function creerMiniatureImageSelonFormat($infos_image_originale, $format = 'O') { |
$image_redimensionnee = false; |
if ($format == 'O') { |
// format original : rien à faire |
$image_redimensionnee = $infos_image_originale['image']; |
130,8 → 131,9 |
// on applique l'algorithme d'auto détection de sujets |
// qui centre la miniature sur le sujet de l'image |
$image_redimensionnee = $this->opticrop($infos_image_originale, $format); |
} else { |
// si l'on ne dispose que de gd |
} |
if ($image_redimensionnee === false) { |
// si l'on ne dispose que de gd ou bien que Imagick a échoué |
// la minature est une image redimensionnée rognée au centre |
$image_redimensionnee = $this->creerMiniatureCarreeRognee($infos_image_originale, $format); |
} |
258,7 → 260,7 |
|
if ($this->estPaysage($informations_image)) { |
$cote_carre_non_redimensionne = $informations_image['hauteur']; |
$debut_largeur_a_copier = ($informations_image['hauteur'] - $cote_carre)/2 ; |
$debut_largeur_a_copier = ($informations_image['largeur'] / 2) - ($informations_image['hauteur'] / 2); |
$debut_hauteur_a_copier = 0; |
|
if($debut_largeur_a_copier <= 0) { |
270,7 → 272,7 |
} else { |
$cote_carre_non_redimensionne = $informations_image['largeur']; |
$debut_largeur_a_copier = 0 ; |
$debut_hauteur_a_copier = ($informations_image['largeur'] - $cote_carre)/2; |
$debut_hauteur_a_copier = ($informations_image['hauteur'] / 2) - ($informations_image['largeur'] / 2); |
|
if($debut_hauteur_a_copier <= 0) { |
$debut_hauteur_a_copier = 0; |
546,6 → 548,7 |
*/ |
public function opticrop($informations_image, $format) { |
umask(0); |
$erreur_ecriture = false; |
|
$nom_temp = md5(time()); |
$chemin_temp = |
581,9 → 584,21 |
$img->edgeImage($r); |
$img->modulateImage(100,0,100); // grayscale |
$img->blackThresholdImage("#0f0f0f"); |
$img->writeImage($out); |
$retour_ecriture_img = $img->writeImage($out); |
|
if ($retour_ecriture_img !== true) { |
error_log("Erreur d'écriture Imagick : [" . $chemin_image . "] vers [" . $out . "]"); |
$erreur_ecriture = true; |
} |
// use gd for random pixel access |
$im = ImageCreateFromJpeg($out); |
|
if ($im === false) { |
error_log("GD ne peut pas lire l'image créée par Imagick : [" . $chemin_image . "] vers [" . $out . "]"); |
$erreur_ecriture = true; |
} |
|
if (! $erreur_ecriture) { |
$xcenter = 0; |
$ycenter = 0; |
$sum = 0; |
675,15 → 690,23 |
} |
} |
|
// return image |
// écrasement de l'image par la version "croppée" |
$imgcp->cropImage($maxparam['w'], $maxparam['h'], $maxparam['x'], $maxparam['y']); |
$imgcp->scaleImage($largeur_vignette, $hauteur_vignette); |
$imgcp->writeImage($out); |
|
// return image |
chmod($out, 0777); |
$img->destroy(); |
$imgcp->destroy(); |
$image_sortie = ImageCreateFromJpeg($out); |
} else { |
// image n'a pas pu être croppée - on retourne l'originale |
//$image_sortie = ImageCreateFromJpeg($chemin_image); |
$image_sortie = false; |
} |
|
$image_sortie = ImageCreateFromJpeg($out); |
// destruction fichier temporaire dans tous les cas |
unlink($out); |
|
return $image_sortie; |