0

我正在使用 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 方法将不同的过滤器堆叠在一起?

4

1 回答 1

0

没关系,我通过更改核心逻辑解决了它。setParameter()将所有操作以数组格式存储在循环外调用该方法解决了我的问题。

于 2015-07-22T20:17:24.893 回答