压缩和调整用户上传的图像的大小

我正在build立一个网站,有很多用户上传的图像(如airbnb假设)

到现在为止,该网站会上传你提交给亚马逊S3的任何图像,然后相应显示。 有时这些图像太重,并增加页面加载时间。

我想调整这个图像到需要的分辨率,并尽可能压缩(转换为JPEG),以加快加载时间,减lessstream量。

我发现这可以通过以下方式来完成:

  • 创build一个HTMLcanvas,在浏览器中进行相关的转换,然后上传。
  • 将图像上传到服务器,然后运行一些后端任务以减小尺寸和压缩。

每种方法有哪些好处? 这是最常见的? 我应该在每种情况下考虑什么?

我的堆栈目前是node.js / angular。 由于项目处于开发阶段,我现在不打算使用CDN

提前致谢!

你需要安装并添加imagemin到你的grunt任务这里是一个链接让你去https://github.com/gruntjs/grunt-contrib-imagemin祝你好运。

为了logging,我发现最简单的解决scheme是加载用户在html5canvas中select的任何图像并将其转换为jpeg,然后上载jpeg并在后端使用节点imagemagick包调整其大小。

通过在前端转换为jpeg,您可以最大限度地减less上传时间,同时不会损失性能,并将input格式规范化为后端服务。