phpThumb -是否可以使用setParameter方法添加多个过滤器?


phpThumb - is it possible to add more than one filter using the setParameter method?

我正在用phpThumb构建一个缩略图构造函数(这里有James Heinrich的实现)。基本上,我封装了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方法将不同的过滤器堆叠在一起?

没关系,我通过改变核心逻辑解决了这个问题。在循环中调用setParameter()方法,所有操作存储在数组格式中,解决了我的问题。