652,6 → 652,7 |
$erreur_ecriture = true; |
} |
} catch (ImagickException $e) { |
echo "/i"; |
// En principe si on se trouve ici c'est que l'image est vide |
$erreur_ecriture = true; |
$image_sortie = false; |
680,6 → 681,7 |
$wcrop0 = round($ar*$hauteur_image_originale); |
$hcrop0 = $hauteur_image_originale; |
} else { |
// source AR wider than target |
// crop height to target AR |
$wcrop0 = $largeur_image_originale; |
$hcrop0 = round($largeur_image_originale/$ar); |
737,7 → 739,26 |
|
// é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); |
// retailler correctement si au moins une des dimensions de l'image produite est |
// inférieure aux dimensions demandées |
$geo = $imgcp->getImageGeometry(); |
$ratio_la = $geo['width'] / $largeur_vignette; |
$ratio_ha = $geo['height'] / $hauteur_vignette; |
if ($ratio_la < 1 || $ratio_ha < 1) { |
// cas kipu - on agrandit au max la dimension ayant le ratio le plus faible |
// (= le plus d'écart avec la taille attendue) |
if ($ratio_la < $ratio_ha) { |
$imgcp->scaleImage($largeur_vignette, 0); |
} else { |
$imgcp->scaleImage(0, $hauteur_vignette); |
} |
// puis on recoupe en centrant à l'arrache - bizarre que le script ne fasse pas ça de base :-/ |
$geo = $imgcp->getImageGeometry(); |
$imgcp->cropImage($largeur_vignette, $hauteur_vignette, max(0, floor($geo['width'] / 2 - $largeur_vignette / 2)), max(0, floor($geo['height'] / 2 - $hauteur_vignette / 2))); |
} else { |
// cas général |
$imgcp->scaleImage($largeur_vignette, $hauteur_vignette, false); |
} |
$imgcp->writeImage($out); |
|
// return image |