使用Laravel为社交网站创建缩略图图像

时间:2015-01-25 19:14:11

标签: image image-processing laravel gallery thumbnails

我想知道是否有人知道解决这个问题的好策略:

我正在使用Laravel 4创建一个社交网站。用户可以将图片上传到他们自己的图库。这些图片可以是任何形状和大小,但其配置文件中的图库仅显示图像的裁剪和调整大小的缩略图(200px x 200px),您可以单击该图像以查看完整图像。

我现在正在使用Laravel插件干预,它会保存原始图像,然后调整大小并裁剪图像并再次保存(所以现在我有2份副本)。然后,我将裁剪/调整大小的图像显示为链接到完整尺寸原始图像的缩略图。但是,我发现制作每张图片的副本对我服务器上的空间造成了繁琐的浪费,因为可能会有数千张图片上传到网站。

有没有办法抓取原始图像,调整大小并动态裁剪它并仅在用户加载页面时显示它而不必将缩略图保存到服务器?还是我不得不为每张图片制作裁剪副本?

一个很好的例子展示了我希望实现的目标是Facebook将图片裁剪成用户图片库中的方块,或者当用户将多个图片上传到某个状态时,如何在新闻源上裁剪和调整它们的大小。

非常感谢任何建议!

2 个答案:

答案 0 :(得分:1)

你见过League/Glide了吗?它基本上是干预/图像和干预/ ImageCache的包装器。 Glide's Laravel setup video让你在两分钟内完成设置(注意第二个例子)。

答案 1 :(得分:0)

是干预让你操纵和动态显示。 这是一个简单的例子(显然你实际上是用控制器等来做)

Route::get('img/profile/picture.jpg', function(){
    $img = Image::make('path/to/profile/picture.jpg');

    // resize, crop, whatever

    return $img->response();
});

然后,您只需将正确的URI设置为此路线的src

Intervention Docs

请注意,这将使用更多服务器资源并使图片响应更长时间