PECL Imagick adaptiveSharpenImage не работает?

Я пытаюсь отточить свои изображения с помощью этой функции, но она не работает. Какие бы значения я ни передавал для радиуса и сигмы, я получаю одинаковое изображение (даже с одинаковым размером файла).

Возвращает 1, предлагая отсутствие ошибок. Что может быть не так?

$photo = new Imagick(PHOTOS_DIR.$sFilename);
$photo->adaptiveSharpenImage(2,1);  //4,2 ... 0,10, 0.5,0.5 - all give identical results
$guid = md5(uniqid(rand(),true));
$photo->writeImage(PHOTOS_DIR.'/temp/'.$guid.'.jpg');

Я пытался пройти в imagick::CHANNEL_BLUE для необязательного третьего параметра это не имеет значения.

  • CentOS 6.5
  • PHP 5.5.12
  • pecl-imagick 3.1.2
  • imagemagick 6.5.4

1 ответ

Функция adaptiveImageSharpen в некоторых случаях очень тонкая. Изображения ниже являются источником, а затем заостренным, произведенным:

$radius = 10;
$sigma = 2;
$imagick->adaptiveSharpenImage($radius, $sigma);

Исходное изображение

Исходное изображение

Заостренное изображение

Заостренный

Даже при этих относительно больших значениях изображение явно повышается, но эффект заметен только по сравнению с исходным изображением. Радиус, который вы выберете, будет зависеть от размера исходного изображения, но должен быть не менее пары пикселей в поперечнике. В качестве альтернативы вы можете установить радиус нуля, и ImageMagick должен выбрать соответствующее значение для изображения.

В зависимости от того, что вы пытаетесь достичь с помощью заточки, вам может быть лучше и старомодно unsharpMaskImage если adaptiveSharpenImage всегда слишком тонкий эффект для вас.

Или это может быть просто сломано на очень старой версии ImageMagick, которую вы используете - можете попробовать пример изображения и настройки выше.

Другие вопросы по тегам