首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel 5干预-映像/干预-缓存:灵活的url /路由

Laravel 5干预-映像/干预-缓存:灵活的url /路由
EN

Stack Overflow用户
提问于 2015-03-17 12:14:30
回答 2查看 7.2K关注 0票数 11

在Laravel 5中摆弄干预2.0,我想要的是操纵图像(大小和裁剪),并使用干预图像缓存来缓存图像。基本上,我试图实现的是好的、旧的(和不安全的) timthumb.php的功能。

我开始用这个作为例子:

代码语言:javascript
复制
// routes.php
Route::get('imager/{src?}', function ($src)
{
    $cacheimage = Image::cache(function($image) use ($src) {
        return $image->make("files/image/".$src)->resize(100,50);
    }, 10, true);

    return Response::make($cacheimage, 200, array('Content-Type' => 'image/jpeg'));
});

当我加载如下所示的图像时,

代码语言:javascript
复制
// template
<img src="{{"imager/image.jpg"}}"/>

效果很好。

但是..。在我的情况下,图像可以定位在不同的(子)目录,有时是多层次的深度。他们是维护在我的CMS由他们的网站管理员。

示例:

  • 文件/图像/Image.jpg
  • 文件/图像/标题/Image.jpg
  • 文件/图像/背景/颜色/Image.jpg
  • img/公用/logo.png

这些图像url是从mysql表记录中加载的。

当这样的图像加载时,

代码语言:javascript
复制
// template
<img src="{{"imager/files/images/image.jpg"}}"/>

这条路已经不管用了。毕竟,文件图像images.jpg都是url段,它们的数量可能有所不同。

映像url (Bold)应该作为一个变量来处理:

Route::get('imager/files/images/image.jpg',函数($src = false)

然后,我应该能够将尺寸和裁剪参数从课程中传递出去。因为img长度可能会有所不同,所以我想我可以使用像?w=100&h=50&c=true之类的查询来传递参数。

更新

当我对图像url使用查询参数时:

代码语言:javascript
复制
Route::get('imager', function ()
{
    $src = Input::get('src', 1);

    $cacheimage = Image::cache(function($image) use ($src) {
        return $image->make($src)->resize(100,100);
    }, 1, false); // one minute cache expiry

    return Response::make($cacheimage, 200, array('Content-Type' => 'image/jpeg'));
});

// template
<img src="{{"imager?src=files/images/image.jpg"}}"/>

这个很管用。

EN

回答 2

Stack Overflow用户

发布于 2015-05-31 07:04:13

这很简单。您只需告诉Laravel,您的图像参数由字母、斜杠、破折号、下划线和点('[A-Za-z0-9\/\.\-\_]+')组成,因为默认情况下,框架匹配除斜杠/以外的所有内容。

代码语言:javascript
复制
Route::get('imager/{image?}', function($src) {

    $cachedImage = Image::cache(function($image) use ($src) {
        return $image->make($src)->resize(100,100);
    }, 1, false);

    return Response::make($cachedImage, 200, ['Content-Type' => 'image/jpeg']);
})->where('image', '[A-Za-z0-9\/\.\-\_]+');

您可以在文档中找到更多关于参数绑定的信息。

票数 3
EN

Stack Overflow用户

发布于 2019-08-04 14:49:47

现在您可以使用基于URL的图像处理

在Laravel应用程序中,可以使用URL动态地操作图像。操作版本的图像将存储在缓存中,并将直接加载而不需要资源密集型的GD操作。 图片只能上传一次。当通过如下HTTP请求访问该文件时,所有操作(如调整大小或裁剪)将在稍后处理: http://yourhost.com/{route-name}/{template-name}/{file-name}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29098814

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档