[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: ImageMagick, центровка по ширине при обрезке
asdf27
Доброго времени.

//6*9 - 709x1063 - центр ширина 
$thumb = new Imagick('image.jpg');
$thumb->adaptiveResizeImage(0,1063); // ресайз по высоте
$thumb->writeImage('1/5na5res.jpg');
$thumb->destroy();

$inFile = "1/5na5res.jpg";
$imageprops = $inFile->getImageGeometry();
$x=($imageprops['width']-709)/2; // вычитаю от ШИРИНЫ нужный размер и делю на 2, тем самым ловлю отступ для центровки
$outFile = "1/6na9.jpg";
$image = new Imagick($inFile);
$image->cropImage(709,1063,$x,0); // задаю отступ по горизонтали
$image->writeImage($outFile);


Делаю ресайз, ширина больше чем надо. Далее пытаюсь поймать величину отступа, прописываю при обрезке. Но ничего не происходит. Делаю с ImageMagick.

Или может иначе как её поймать? Нужно резать по центру.
asdf27
Типичная ошибка по невнимательности. Я пытался взять ширину от статичной переменной, в то время как класс с дальнейшим массивом свойств находится ниже. После код также обратите момент на еще одно упоминание. Правильный код:

//9*12 - 1063x1417 - центр ширина 
$thumb = new Imagick($fileName);
$thumb->adaptiveResizeImage(0,1417);
$thumb->writeImage('1/5na5res.jpg');
$thumb->destroy();

$inFile = "1/5na5res.jpg";
$outFile = "1/9na12.jpg";
$image = new Imagick($inFile);
$width = $image->getImageWidth();
$x=($width-1063)/2;
$image->cropImage(1063,1417,$x,0);
$image->writeImage($outFile);
$image->destroy();

$image->destroy(); - если не уничтожить, то дальше сторонний код, не связанный с imagemagick выполняться не будет.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.