使用 Intervention \ Image 创建图像缓存时遇到问题
Having problems with creating image cache with Intervention \ Image
这是我的代码
public static function getImageThumb($link) {
$domain = substr(Request::root(), 7);
if(starts_with(Request::root(), 'http://')) {
$domain = substr(Request::root(), 7);
}
$link = $domain.$link; // This is prety much something like this domain.name/uploads/image/13_0.jpeg
$img = Image::cache(function ($image) use ($link) {
return $image->make($link)->resize(230, 140);
}, 5, true);
return $img;
}
它给了我这个:
干预\图片\异常\NotReadableException
图片来源不可读
我真的不知道这里出了什么问题..
感谢帮助!
编辑------------------------
我是这样修复的:
public static function getImageThumb($link) {
$link = trim($link, '/');
$img = Image::cache(function ($image) use ($link) {
return $image->make($link)->resize(230, 140);
}, 5, true);
return $img;
}
但是我现在如何将 link 获取到 img?所以我可以将它放在 src 中作为 img 标签。
如果您要使用 URL 作为 make
方法的 source
参数,请确保它也包括方案,否则它会考虑是本地文件路径。所以摆脱你从 URL 中剥离 http://
的部分,只需使用:
public static function getImageThumb($link)
{
$link = Request::root() . $link;
$img = Image::cache(function ($image) use ($link) {
return $image->make($link)->resize(230, 140);
}, 5, true);
return $img;
}
此外,由于图像不是来自远程域,因此从文件系统中读取它比为它发出 HTTP 请求更有意义:
public static function getImageThumb($link)
{
$path = public_path() . $link;
$img = Image::cache(function ($image) use ($path) {
return $image->make($path)->resize(230, 140);
}, 5, true);
return $img;
}
要return 图像的缓存版本,您必须有一个专用路由来检索调整大小的图像。应该这样做:
Route::get('/images/{link}', function ($link)
{
// Repo will be the class implementing your getImageThumb method
$img = Repo::getImageThumb($link);
// This makes sure the HTTP response contains the necessary image headers
return $img->response();
});
现在在你的 blade 模板文件中生成 URL 像这样:
<img src="{{ asset('/images/' . $link) }}">
通过在实际 link 路径前添加 /images
,您将找到将使用图像缓存(如果可用)的路径。所以你的 links 现在看起来像这样:
http://domain.name/images/uploads/image/13_0.jpeg
而不是
http://domain.name/uploads/image/13_0.jpeg
当然你可以使用任何你喜欢的作为路径前缀,不一定/images
。
这是我的代码
public static function getImageThumb($link) {
$domain = substr(Request::root(), 7);
if(starts_with(Request::root(), 'http://')) {
$domain = substr(Request::root(), 7);
}
$link = $domain.$link; // This is prety much something like this domain.name/uploads/image/13_0.jpeg
$img = Image::cache(function ($image) use ($link) {
return $image->make($link)->resize(230, 140);
}, 5, true);
return $img;
}
它给了我这个: 干预\图片\异常\NotReadableException 图片来源不可读
我真的不知道这里出了什么问题..
感谢帮助!
编辑------------------------
我是这样修复的:
public static function getImageThumb($link) {
$link = trim($link, '/');
$img = Image::cache(function ($image) use ($link) {
return $image->make($link)->resize(230, 140);
}, 5, true);
return $img;
}
但是我现在如何将 link 获取到 img?所以我可以将它放在 src 中作为 img 标签。
如果您要使用 URL 作为 make
方法的 source
参数,请确保它也包括方案,否则它会考虑是本地文件路径。所以摆脱你从 URL 中剥离 http://
的部分,只需使用:
public static function getImageThumb($link)
{
$link = Request::root() . $link;
$img = Image::cache(function ($image) use ($link) {
return $image->make($link)->resize(230, 140);
}, 5, true);
return $img;
}
此外,由于图像不是来自远程域,因此从文件系统中读取它比为它发出 HTTP 请求更有意义:
public static function getImageThumb($link)
{
$path = public_path() . $link;
$img = Image::cache(function ($image) use ($path) {
return $image->make($path)->resize(230, 140);
}, 5, true);
return $img;
}
要return 图像的缓存版本,您必须有一个专用路由来检索调整大小的图像。应该这样做:
Route::get('/images/{link}', function ($link)
{
// Repo will be the class implementing your getImageThumb method
$img = Repo::getImageThumb($link);
// This makes sure the HTTP response contains the necessary image headers
return $img->response();
});
现在在你的 blade 模板文件中生成 URL 像这样:
<img src="{{ asset('/images/' . $link) }}">
通过在实际 link 路径前添加 /images
,您将找到将使用图像缓存(如果可用)的路径。所以你的 links 现在看起来像这样:
http://domain.name/images/uploads/image/13_0.jpeg
而不是
http://domain.name/uploads/image/13_0.jpeg
当然你可以使用任何你喜欢的作为路径前缀,不一定/images
。