所以继承我的代码
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;
}
它给了我这个: 干预\ Image \ Exception \ NotReadableException 图像源不可读
我真的不知道这里有什么不对..
感谢您的帮助!
EDIT -------------------------
我这样修好了:
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;
}
但是我现在如何获得img的链接?所以我可以把它放在src中用于img标签。
答案 0 :(得分:1)
如果您要使用URL作为source
方法的make
参数,请确保它也包含该方案,否则它会将其视为本地文件路径。因此,除去从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;
}
要返回图像的缓存版本,您必须拥有一条专用路径来检索已调整大小的图像。这样的事情应该做:
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();
});
现在,在您的刀片式服务器模板文件中,您可以生成如下所示的URL:
<img src="{{ asset('/images/' . $link) }}">
通过将/images
添加到实际的链接路径,您将访问将使用图像缓存的路由(如果可用)。所以你的链接现在看起来像这样:
http://domain.name/images/uploads/image/13_0.jpeg
而不是
http://domain.name/uploads/image/13_0.jpeg
当然,你可以使用你喜欢的任何东西作为路径前缀,不一定是/images
。