如何处理size较大的上传图像?

2013-09-03 08:53:06 +08:00
 hustlzp
最近在折腾图片上传方面的东西。

发现Nginx 1.0.5默认的的http body最大为2M,上传超过2M的图片就会报413 Request Entity Too Large。

当然可以在nginx.conf中加一行:client_max_body_size 5M;

但其实页面显示不需要这么大的图片,于是再用PIL压缩一下上传图片,然后存盘。

想请教一下大家是怎么处理这种问题的?
2937 次点击
所在节点    Python
11 条回复
9hills
2013-09-03 08:58:53 +08:00
1. 上传后处理,可以保留原图和缩略图, 优点是逻辑简单
2. 上传前处理,比较麻烦,用flash or js来做。。优点是减少传输时间
koon_kai
2013-09-03 09:06:12 +08:00
我最近也在弄这个,也是用PIL压缩,关注下看看还有没其他方法。
twtww
2013-09-03 10:33:35 +08:00
tinypic压缩一下吧 http://tinypic.com/
hustlzp
2013-09-03 13:57:48 +08:00
@twtww nice tool!
hustlzp
2013-09-03 13:58:41 +08:00
@9hills 恩,flash就不考虑了。请问你知道有什么这方面的js库吗?
zenozeng
2013-09-03 14:02:17 +08:00
如果在前端处理,大概可以减少上传和CPU压力?
hustlzp
2013-09-03 14:04:54 +08:00
@9hills http://stackoverflow.com/questions/5607396/compress-images-on-client-side-before-uploading

在stackoverflow上找到了相关的资料,看来需要使用canvas了。
akinoniku
2013-09-03 14:11:57 +08:00
hustlzp
2013-09-03 14:14:54 +08:00
@zenozeng 恩,也可以显著减少用户等待时间,减少磁盘占用量。当然也不能压缩得太小,适当压缩,比如4000x3000的压缩成2000x1500的就可以了。
hustlzp
2013-09-03 14:15:43 +08:00
@akinoniku nice!many thanks!
tioover
2013-09-03 14:29:01 +08:00
即使这样也大的话,可以用nginx_upload_module

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/81134

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX