草庐IT

php - Laravel 5 干预图像/干预缓存 : flexible url/routing

coder 2023-12-30 原文

摆弄 Intervention 2.0在 Laravel 5 中。我想要的是操纵图像(大小和裁剪)并使用干预 Image Caching缓存图像。我基本上尝试实现的是旧的(和不安全的)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 中维护。

例子:

  • 文件/图像/image.jpg
  • 文件/图像/headers/image.jpg
  • 文件/图像/背景/颜色/图像.jpg
  • img/common/logo.png

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

当这样的图像加载时:

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

该路线不再有效。毕竟,filesimagesimages.jpg 都是 url 段,它们的数量可能不同

图像 url(粗体)应作为一个变量处理:

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

然后我应该能够将尺寸调整和裁剪参数传递到偏离路线的位置。因为 img url 长度可能会有所不同,所以我假设我可以通过查询传递参数,例如 ?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"}}"/>

这行得通。

最佳答案

很简单。你只需要告诉 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\/\.\-\_]+');

您可以在 documentation 中找到有关参数绑定(bind)的更多信息.

关于php - Laravel 5 干预图像/干预缓存 : flexible url/routing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29098814/

有关php - Laravel 5 干预图像/干预缓存 : flexible url/routing的更多相关文章

  1. ruby - 如何在 Ubuntu 中清除 Ruby Phusion Passenger 的缓存? - 2

    我试过重新启动apache,缓存的页面仍然出现,所以一定有一个文件夹在某个地方。我没有“公共(public)/缓存”,那么我还应该查看哪些其他地方?是否有一个URL标志也可以触发此效果? 最佳答案 您需要触摸一个文件才能清除phusion,例如:touch/webapps/mycook/tmp/restart.txt参见docs 关于ruby-如何在Ubuntu中清除RubyPhusionPassenger的缓存?,我们在StackOverflow上找到一个类似的问题:

  2. ruby-on-rails - Ruby on Rails 计数器缓存错误 - 2

    尝试在我的RoR应用程序中实现计数器缓存列时出现错误Unknownkey(s):counter_cache。我在这个问题中实现了模型关联:Modelassociationquestion这是我的迁移:classAddVideoVotesCountToVideos0Video.reset_column_informationVideo.find(:all).eachdo|p|p.update_attributes:videos_votes_count,p.video_votes.lengthendenddefself.downremove_column:videos,:video_vot

  3. ruby-on-rails - 添加回形针新样式不影响旧上传的图像 - 2

    我有带有Logo图像的公司模型has_attached_file:logo我用他们的Logo创建了许多公司。现在,我需要添加新样式has_attached_file:logo,:styles=>{:small=>"30x15>",:medium=>"155x85>"}我是否应该重新上传所有旧数据以重新生成新样式?我不这么认为……或者有什么rake任务可以重新生成样式吗? 最佳答案 参见Thumbnail-Generation.如果rake任务不适合你,你应该能够在控制台中使用一个片段来调用重新处理!关于相关公司

  4. ruby-on-rails - 在 Ruby (on Rails) 中使用 imgur API 获取图像 - 2

    我正在尝试使用Ruby2.0.0和Rails4.0.0提供的API从imgur中提取图像。我已尝试按照Ruby2.0.0文档中列出的各种方式构建http请求,但均无济于事。代码如下:require'net/http'require'net/https'defimgurheaders={"Authorization"=>"Client-ID"+my_client_id}path="/3/gallery/image/#{img_id}.json"uri=URI("https://api.imgur.com"+path)request,data=Net::HTTP::Get.new(path

  5. python ffmpeg 使用 pyav 转换 一组图像 到 视频 - 2

    2022/8/4更新支持加入水印水印必须包含透明图像,并且水印图像大小要等于原图像的大小pythonconvert_image_to_video.py-f30-mwatermark.pngim_dirout.mkv2022/6/21更新让命令行参数更加易用新的命令行使用方法pythonconvert_image_to_video.py-f30im_dirout.mkvFFMPEG命令行转换一组JPG图像到视频时,是将这组图像视为MJPG流。我需要转换一组PNG图像到视频,FFMPEG就不认了。pyav内置了ffmpeg库,不需要系统带有ffmpeg工具因此我使用ffmpeg的python包装p

  6. ruby-on-rails - 优雅的 Rails : multiple routes, 相同的 Controller Action - 2

    让多条路线去同一条路的最优雅的方式是什么ControllerAction?我有:get'dashboard',to:'dashboard#index'get'dashboard/pending',to:'dashboard#index'get'dashboard/live',to:'dashboard#index'get'dashboard/sold',to:'dashboard#index'这很丑陋。有什么“更优雅”的建议吗?一个类轮的奖励积分。 最佳答案 为什么不只有一个路由和一个Controller操作,并根据传递给它的参数来

  7. ruby - 是否有将图像文件转换为 ASCII 艺术的命令行程序或库? - 2

    有这样的事吗?我想在Ruby程序中使用它。 最佳答案 试试这个http://csl.sublevel3.org/jp2a/此外,Imagemagick可能还有一些东西 关于ruby-是否有将图像文件转换为ASCII艺术的命令行程序或库?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/6510445/

  8. ruby-on-rails - 使用 Dragonfly 从 URL 分配图像 - 2

    我正在使用Dragonfly在Rails3.1应用程序上处理图像。我正在努力通过url将图像分配给模型。我有一个很好的表格:{:multipart=>true}do|f|%>RemovePicture?Dragonfly的文档指出:Dragonfly提供了一个直接从url分配的访问器:@album.cover_image_url='http://some.url/file.jpg'但是当我在控制台中尝试时:=>#ruby-1.9.2-p290>picture.image_url="http://i.imgur.com/QQiMz.jpg"=>"http://i.imgur.com/QQ

  9. Ruby-vips 图像处理库。有什么好的使用示例吗? - 2

    我对图像处理完全陌生。我对JPEG内部是什么以及它是如何工作一无所知。我想知道,是否可以在某处找到执行以下简单操作的ruby​​代码:打开jpeg文件。遍历每个像素并将其颜色设置为fx绿色。将结果写入另一个文件。我对如何使用ruby​​-vips库实现这一点特别感兴趣https://github.com/ender672/ruby-vips我的目标-学习如何使用ruby​​-vips执行基本的图像处理操作(Gamma校正、亮度、色调……)任何指向比“helloworld”更复杂的工作示例的链接——比如ruby​​-vips的github页面上的链接,我们将不胜感激!如果有ruby​​-

  10. ruby-on-rails - 如何播种图像的路径? - 2

    Organization和Image具有一对一的关系。Image有一个名为filename的列,它存储文件的路径。我在Assets管道中包含这样一个文件:app/assets/other/image.jpg。播种时如何包含此文件的路径?我已经在我的种子文件中尝试过:@organization=...@organization.image.create!(filename:File.open('app/assets/other/image.jpg'))#Ialsotried:#@organization.image.create!(filename:'app/assets/other/i

随机推荐