在Laravel 5中摆弄干预2.0,我想要的是操纵图像(大小和裁剪),并使用干预图像缓存来缓存图像。基本上,我试图实现的是好的、旧的(和不安全的) timthumb.php的功能。
我开始用这个作为例子:
// 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'));
});当我加载如下所示的图像时,:
// template
<img src="{{"imager/image.jpg"}}"/>效果很好。
但是..。在我的情况下,图像可以定位在不同的(子)目录,有时是多层次的深度。他们是维护在我的CMS由他们的网站管理员。
示例:
这些图像url是从mysql表记录中加载的。
当这样的图像加载时,:
// 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使用查询参数时:
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"}}"/>这个很管用。
发布于 2015-05-31 07:04:13
这很简单。您只需告诉Laravel,您的图像参数由字母、斜杠、破折号、下划线和点('[A-Za-z0-9\/\.\-\_]+')组成,因为默认情况下,框架匹配除斜杠/以外的所有内容。
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\/\.\-\_]+');您可以在文档中找到更多关于参数绑定的信息。
发布于 2019-08-04 14:49:47
现在您可以使用基于URL的图像处理了
在Laravel应用程序中,可以使用URL动态地操作图像。操作版本的图像将存储在缓存中,并将直接加载而不需要资源密集型的GD操作。 图片只能上传一次。当通过如下HTTP请求访问该文件时,所有操作(如调整大小或裁剪)将在稍后处理:
http://yourhost.com/{route-name}/{template-name}/{file-name}
https://stackoverflow.com/questions/29098814
复制相似问题