我正在用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()
方法,所有操作存储在数组格式中,解决了我的问题。