如何用Intervention Image Cache输出缓存的图片?
How to output the cached image with Intervention Image Cache?
我已经设法让标准 Intervention Image 正常工作,但我终究无法让它与缓存系统一起工作。我在没有框架的标准 PHP 设置上使用它。
这是我的代码
// import the Intervention Image Manager Class ~ http://image.intervention.io/
use Intervention\Image\ImageManager;
// create an image manager instance with favored driver
if (!extension_loaded('imagick')) {
$this->manager = new ImageManager(array('driver' => 'GD'));
} else {
$this->manager = new ImageManager(array('driver' => 'imagick'));
}
$img = $this->manager->cache(
function ($image) use ($imagePath) {
$image = $image->make($imagePath);
// Check for dimensions
if (
(!empty($_GET['w']) && is_numeric($_GET['w'])) || (!empty($_GET['h']) && is_numeric($_GET['h']))
) {
// Dimensions set
// Set default options
$width = (!empty($_GET['w'])) ? (int) trim($_GET['w']) : null;
$height = (!empty($_GET['h'])) ? (int) trim($_GET['h']) : null;
// Resize and return the image
return $image->resize($width, $height, function ($constraint) {
$constraint->aspectRatio();
// prevent possible upsizing
if (empty($_GET['e']) || trim($_GET['e']) !== 'y') {
$constraint->upsize();
}
});
} else {
// Return the image
return $image;
}
}
);
// Output the image
echo $img->response();
exit;
但我收到错误 Call to a member function response() on string
。
同样,我没有使用 Laravel 或任何其他包,这只是一个普通的 PHP 脚本。
我已经尝试设置 documentation (as pointed out by 中定义的第二个和第三个参数。无论我将第三个参数设置为 TRUE
还是 FALSE
如果我回显 $img
它仍然只是 return 一个像 ����JFIF``��;CREATOR: gd-jpeg v1.0 (using IJG JPEG v90), quality = 90
这样的字符串
如果我 运行 下面的代码只使用核心干预图像包,它输出非常好,但我似乎无法让缓存选项工作以及 [=44= 中的所有示例] 问题跟踪器似乎适用于 v1/pre 2017。
// import the Intervention Image Manager Class ~ http://image.intervention.io/
use Intervention\Image\ImageManager;
// create an image manager instance with favored driver
if (!extension_loaded('imagick')) {
$this->manager = new ImageManager(array('driver' => 'GD'));
} else {
$this->manager = new ImageManager(array('driver' => 'imagick'));
}
// Create the image
$img = $this->manager->make($imagePath);
// Check for dimensions
if (
(!empty($_GET['w']) && is_numeric($_GET['w'])) || (!empty($_GET['h']) && is_numeric($_GET['h']))
) {
// Dimensions set
// Set default options
$width = (!empty($_GET['w'])) ? (int) trim($_GET['w']) : null;
$height = (!empty($_GET['h'])) ? (int) trim($_GET['h']) : null;
// Resize and return the image
$img = $img->resize($width, $height, function ($constraint) {
$constraint->aspectRatio();
// prevent possible upsizing
if (empty($_GET['e']) || trim($_GET['e']) !== 'y') {
$constraint->upsize();
}
});
}
// Output the image
echo $img->response();
exit;
我怎样才能让它工作?
更新
原来我是将 TRUE
参数放在 $image->resize()
函数中,而不是放在 $this->manager->cache()
方法的末尾。谢谢!
您需要添加缓存生命周期和 true 作为第三个参数,以便它 returns 您是一个对象,而不是按照 documentation
的字符串
我已经设法让标准 Intervention Image 正常工作,但我终究无法让它与缓存系统一起工作。我在没有框架的标准 PHP 设置上使用它。
这是我的代码
// import the Intervention Image Manager Class ~ http://image.intervention.io/
use Intervention\Image\ImageManager;
// create an image manager instance with favored driver
if (!extension_loaded('imagick')) {
$this->manager = new ImageManager(array('driver' => 'GD'));
} else {
$this->manager = new ImageManager(array('driver' => 'imagick'));
}
$img = $this->manager->cache(
function ($image) use ($imagePath) {
$image = $image->make($imagePath);
// Check for dimensions
if (
(!empty($_GET['w']) && is_numeric($_GET['w'])) || (!empty($_GET['h']) && is_numeric($_GET['h']))
) {
// Dimensions set
// Set default options
$width = (!empty($_GET['w'])) ? (int) trim($_GET['w']) : null;
$height = (!empty($_GET['h'])) ? (int) trim($_GET['h']) : null;
// Resize and return the image
return $image->resize($width, $height, function ($constraint) {
$constraint->aspectRatio();
// prevent possible upsizing
if (empty($_GET['e']) || trim($_GET['e']) !== 'y') {
$constraint->upsize();
}
});
} else {
// Return the image
return $image;
}
}
);
// Output the image
echo $img->response();
exit;
但我收到错误 Call to a member function response() on string
。
同样,我没有使用 Laravel 或任何其他包,这只是一个普通的 PHP 脚本。
我已经尝试设置 documentation (as pointed out by TRUE
还是 FALSE
如果我回显 $img
����JFIF``��;CREATOR: gd-jpeg v1.0 (using IJG JPEG v90), quality = 90
这样的字符串
如果我 运行 下面的代码只使用核心干预图像包,它输出非常好,但我似乎无法让缓存选项工作以及 [=44= 中的所有示例] 问题跟踪器似乎适用于 v1/pre 2017。
// import the Intervention Image Manager Class ~ http://image.intervention.io/
use Intervention\Image\ImageManager;
// create an image manager instance with favored driver
if (!extension_loaded('imagick')) {
$this->manager = new ImageManager(array('driver' => 'GD'));
} else {
$this->manager = new ImageManager(array('driver' => 'imagick'));
}
// Create the image
$img = $this->manager->make($imagePath);
// Check for dimensions
if (
(!empty($_GET['w']) && is_numeric($_GET['w'])) || (!empty($_GET['h']) && is_numeric($_GET['h']))
) {
// Dimensions set
// Set default options
$width = (!empty($_GET['w'])) ? (int) trim($_GET['w']) : null;
$height = (!empty($_GET['h'])) ? (int) trim($_GET['h']) : null;
// Resize and return the image
$img = $img->resize($width, $height, function ($constraint) {
$constraint->aspectRatio();
// prevent possible upsizing
if (empty($_GET['e']) || trim($_GET['e']) !== 'y') {
$constraint->upsize();
}
});
}
// Output the image
echo $img->response();
exit;
我怎样才能让它工作?
更新
原来我是将 TRUE
参数放在 $image->resize()
函数中,而不是放在 $this->manager->cache()
方法的末尾。谢谢
您需要添加缓存生命周期和 true 作为第三个参数,以便它 returns 您是一个对象,而不是按照 documentation
的字符串