У меня проблема с ImageIck PHP CLASS. Мой провайдер (1und1.de) позволяет редактировать изображения только через convert-CMD с помощью ImageIck. У меня есть скрипт, который я использовал на другом сервере с другим провайдером, который позволяет установить ImageIck CLASS.
Это скрипт:
header("Cache-Control: private, max-age=".(60 * 60 * 24 * 7).", pre-check=".(60 * 60 * 24 * 7));
header("Pragma: private");
header("Expires: " . date(DATE_RFC822,strtotime(" 2 day")));
$valid_size = array('xx','sm','xs'); //XX = 1440px * 960px // SM =
$img = $_GET['img'];
if(!empty($_GET['output-quality'])) $img_quality = $_GET['output-quality']; else $img_quality = NULL;
if(!empty($_GET['output-size']) && in_array($_GET['output-size'],$valid_size)) $img_size = $_GET['output-size']; else $img_size = NULL;
$img_arr = explode('.',$img);
$img_type = $img_arr[1];
$img_path = '../'.$img;
if(isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) && (strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']) == filemtime($img_path))) {
header('Last-Modified: '.gmdate('D, d M Y H:i:s', filemtime($img_path)).' GMT', true, 304);
exit;
}
$im = new Imagick($img_path);
if(!is_null($img_quality)) $im -> setImageCompressionQuality($img_quality);
if(!is_null($img_size)) {
switch($img_size) {
case 'xx' :
$w = 1440;
$h = 940;
break;
case 'sm' :
$w = 300;
$h = 200;
break;
case 'xs' :
$w = 150;
$h = 150;
break;
}
$dim = $im -> getImageGeometry();
$wDim = $dim['width'];
$hDim = $dim['height'];
if($wDim >= 150 || $hDim >= 150) {
if($wDim >= $hDim) {
$o_scale = $wDim / $hDim;
$n_scale = $w / $h;
if($n_scale >= $o_scale) {
$im -> scaleImage($w,0);
} else $im -> scaleImage(0,$h);
} else {
$o_scale = $hDim / $wDim;
$n_scale = $w / $h;
if($n_scale >= $o_scale) {
$im -> scaleImage($w,0);
} else $im -> scaleImage($w,0);
}
$dim = $im -> getImageGeometry();
$wDim = $dim['width'];
$hDim = $dim['height'];
$wTemp = ($wDim - $w) / 2;
$hTemp = ($hDim - $h) / 2;
$im -> cropImage($w,$h,$wTemp,$hTemp);
}
}
header('Content-type: image/'.$im -> getImageFormat());
header('Content-disposition: inline; filename="'.$img.'"');
echo $im;
Это отлично работает для меня с ImageIck CLASS, но теперь я должен обрабатывать эту обработку без ImageIck CLASS только с convert-CMD.
Я не знаю, как справиться с этим инструментом командной строки …
Спасибо!
Задача ещё не решена.
Других решений пока нет …