phpThumb — можно ли добавить более одного фильтра с помощью метода setParameter?

Я создаю конструктор миниатюр с помощью phpThumb (реализация Джеймса Генриха доступна здесь). По сути, я инкапсулирую класс phpThumb для создания миниатюр с таким синтаксисом:

$thumbnail = \Helpers\Images::getThumbnail("/assets/images/sample.png", [
    "width" => 150,
    "filters" => [
        "grayscale"
    ]
]);

Это проверяет, существует ли изображение, для которого я запрашиваю миниатюру с заданным набором опций и фильтров, и, если это так, оно просто дает мне URL-адрес этого ресурса. Если это не так, он обрабатывает изображение, сохраняет полученную миниатюру и дает мне URL-адрес этого вновь созданного ресурса.

Все идет нормально. Моя проблема возникает, когда я пытаюсь добавить более одного фильтра следующим образом:

$thumbnail = \Helpers\Images::getThumbnail("/assets/images/sample.png", [
    "width" => 150,
    "filters" => [
        "blur" => 25,
        "grayscale"
    ]
]);

Внутренне я делаю так:

    /**
     * more filter cases here
     */
} elseif ($filter === "blur") {
    if (!empty($parameters)) {
        if (sizeof($parameters === 1)) {
            $value = current($parameters);

            if (is_numeric($value)) {
                if ($value >= 0) {
                    if ($value <= 25) {
                        $phpthumb->setParameter("fltr", implode("|", [
                            $filters[$filter],
                            $value
                        ]));
                    }
                }
            }
        }
    }
} elseif ($filter === "brightness") {
    /**
     * more filter cases here
     */

$filters[$filter] — это просто ассоциативный массив с различными кодами операций фильтра, такими как usm (нерезкость), gblr (размытие по Гауссу) и так далее.

Похоже, что многократный вызов метода setParameter() не работает так, как я хочу (или должен).

Есть ли способ сложить разные фильтры вместе, используя подход OO?


person Julio María Meca Hansen    schedule 22.07.2015    source источник


Ответы (1)


Неважно, я решил это, изменив основную логику. Вызов метода setParameter() из цикла со всеми операциями, хранящимися в формате массива, устранил мою проблему.

person Julio María Meca Hansen    schedule 22.07.2015