Php 如何使用干预图像缓存输出缓存图像?

Php 如何使用干预图像缓存输出缓存图像?,php,intervention,image-caching,Php,Intervention,Image Caching,我已经设法让这个标准发挥作用,但我一辈子都无法让它与缓存系统一起工作。我在一个没有框架的标准PHP设置上使用这个 这是我的密码 //导入干预图像管理器类~http://image.intervention.io/ 使用干预\图像\图像管理器; //使用首选驱动程序创建图像管理器实例 如果(!extension_loaded('imagick')){ $this->manager=newimagemanager(数组('driver'=>'GD'); }否则{ $this->manager=new

我已经设法让这个标准发挥作用,但我一辈子都无法让它与缓存系统一起工作。我在一个没有框架的标准PHP设置上使用这个

这是我的密码

//导入干预图像管理器类~http://image.intervention.io/
使用干预\图像\图像管理器;
//使用首选驱动程序创建图像管理器实例
如果(!extension_loaded('imagick')){
$this->manager=newimagemanager(数组('driver'=>'GD');
}否则{
$this->manager=newimagemanager(数组('driver'=>'imagick');
}
$img=$this->manager->cache(
函数($image)使用($imagePath){
$image=$image->make($imagePath);
//检查尺寸
如果(
(!empty($_GET['w'])和&is_numeric($_GET['w']))| |(!empty($_GET['h'])和&is_numeric($_GET['h']))
) {
//尺寸集
//设置默认选项
$width=(!empty($\u GET['w'])?(int)trim($\u GET['w']):null;
$height=(!empty($\u-GET['h'])?(int)trim($\u-GET['h']):null;
//调整大小并返回图像
返回$image->resize($width,$height,function,$constraint){
$constraint->aspectRatio();
//防止可能的升迁
如果(空($_GET['e'])修剪($_GET['e'])!='y'){
$constraint->upsize();
}
});
}否则{
//返回图像
返回$image;
}
}
);
//输出图像
echo$img->response();
出口
但是我得到了对字符串上的成员函数response()的错误调用

同样,我没有使用Laravel或任何其他软件包,这只是一个普通的PHP脚本

我已尝试设置中定义的第二个和第三个参数(正如所指出的)。无论我将第三个参数设置为
TRUE
还是
FALSE
它仍然只返回一个类似
����JFIF``��;创建者:gd jpeg v1.0(使用IJG jpeg v90),质量=90

如果我只使用core Intervention Image包运行以下代码,它的输出非常好,但我似乎无法让缓存选项正常工作,GitHub问题跟踪器中的所有示例似乎都适用于2017年1月1日之前的版本

//导入干预图像管理器类~http://image.intervention.io/
使用干预\图像\图像管理器;
//使用首选驱动程序创建图像管理器实例
如果(!extension_loaded('imagick')){
$this->manager=newimagemanager(数组('driver'=>'GD');
}否则{
$this->manager=newimagemanager(数组('driver'=>'imagick');
}
//创建图像
$img=$this->manager->make($imagePath);
//检查尺寸
如果(
(!empty($_GET['w'])和&is_numeric($_GET['w']))| |(!empty($_GET['h'])和&is_numeric($_GET['h']))
) {
//尺寸集
//设置默认选项
$width=(!empty($\u GET['w'])?(int)trim($\u GET['w']):null;
$height=(!empty($\u-GET['h'])?(int)trim($\u-GET['h']):null;
//调整大小并返回图像
$img=$img->resize($width、$height、function)($constraint){
$constraint->aspectRatio();
//防止可能的升迁
如果(空($_GET['e'])修剪($_GET['e'])!='y'){
$constraint->upsize();
}
});
}
//输出图像
echo$img->response();
出口
我怎样才能让它工作

使现代化
原来我把
TRUE
参数放在
$image->resize()
函数中,而不是放在
$this->manager->cache()
方法的末尾。谢谢

您需要添加缓存生存期和true作为第三个参数,这样它会返回一个对象,而不是字符串,根据

您需要在最后调用response()之前检查$img变量中的内容。乍一看,你的代码很好,不过最好是调试一下,看看发生了什么。@DanielProtopov谢谢你。如果我只是回显
$img
变量,它会输出类似
����JFIF``��;创建者:gd jpeg v1.0(使用IJG jpeg v90),质量=90
。我不知道如何调试它?@DanielProtopopov谢谢,是的,我试过了,但不管我将其设置为
TRUE
还是
FALSE
它都会返回完全相同的值。谢谢,但我已经尝试过设置第二个和第三个参数,但运气不佳。不管我在那里加载了什么选项,它们都返回完全相同的值。“谢谢,我尝试过了,但是我得到了一个错误
找不到类“Image”
。我刚刚发现我在错误的地方添加了参数选项!这现在起作用了。谢谢D