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

Posted

技术标签:

【中文标题】使用 Laravel 为社交网站创建缩略图【英文标题】:Creating thumbnail images for social network site using Laravel 【发布时间】:2015-03-24 06:58:25 【问题描述】:

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

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

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

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

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

非常感谢任何建议!

【问题讨论】:

【参考方案1】:

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

【讨论】:

【参考方案2】:

是的,Intervention 也可以让您在运行中进行操作和显示。 这是一个简单的示例(显然您实际上会使用控制器等)

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

请记住,这将使用更多服务器资源并使图像响应时间更长

【讨论】:

以上是关于使用 Laravel 为社交网站创建缩略图的主要内容,如果未能解决你的问题,请参考以下文章

使用 PHP 从 URL 创建缩略图

Laravel 网站上的虚假帐户创建预防

如何在 PHP 中同时上传图片和创建缩略图?

如何为视频创建缩略图或预览?

创建社交网站

创建社交网站