【发布时间】:2019-11-17 20:00:21
【问题描述】:
我在数据库中有一个图像列包含我的帖子表的图像路径,我在两个不同的地方使用该列,一个用于宽度为 800 像素、高度为 400 像素的单个帖子页面,在我的博客页面中我想使用这些图像,但这次使用不同的宽度和高度(帖子的缩略图).. 我有两个选择,我不确定哪个更好! 第一个我用图像路径,宽度和高度调用函数,因此它返回优化版本,老实说,我没有尝试这样做,我不知道幕后发生了什么我认为是在服务器上创建缩略图版本?
<img src="{{ resizeImage( url('images/posts/' . $post->image) ), '400', '250') }}" />
第二个是当我上传帖子图片时,我为缩略图制作了第二个版本,并称之为 THUMBNAIL_1562572708.jpg。
我的问题是关于性能和这样做的最佳实践,任何建议,如果有比这更好的方法,请分享我正在使用 Laravel,谢谢。
我认为第二个更好,因为我们在发送请求时不需要调用函数或处理某些东西。 但是这种方式也有一个缺点是复制文件,我很困惑,实际上:(
ـــــــــــــــــ
好吧!这是一个真实示例的更新,我想与任何需要帮助的人分享。
你需要安装这些很棒的包
composer require intervention/image intervention/imagecache
请阅读基于 URL 的图像处理机制 http://image.intervention.io/use/url
发布配置文件后,您需要像这样编辑 imagecache 配置文件:
我想你的图片在 public/images 中!
所以我们将从公共目录中读取。
...
'route' => 'thumbnails',
...
'paths' => array(
// From public
public_path(),
),
...
<img src="{{ 'http://127.0.0.1:8000/your_route_name_that_was_setted_in_imagecache_config_file/your_template_name/images/1.png' }}" />
请注意,您有三个默认模板,小、中和大,当然,您可以制作自己的模板。
【问题讨论】:
-
我总是选择第二个,因为它给了我更多的控制权,而且存储比带宽便宜(尤其是对用户而言)。提供现有图像也比获取原始图像、调整大小、将其写入内存和/或磁盘然后提供它要快得多。这可能取决于您可以节省哪些资源。性能不是问题?去第一个。存储不是问题?去第二个。
-
@Loek 当您说存储比带宽便宜时,这是一个很好的提示,您是对的,尤其是当我半小时前看到一个答案时,有人说将宽度为 3000 像素的图像调整为 300 像素可能需要一张图像大约需要 32 MB 的 RAM?这太过分了。
-
你必须在某个时候调整大小,3000px 很多,不要小看。所以内存成本就在那里。是时候担心cpu了。创建 1 个 800 像素照片的拇指并不是那么昂贵,但创建 25 个拇指却是。特别是如果您必须为每个请求都这样做。
标签: php laravel image thumbnails crop