请问怎么压缩上传图片的大小

如题,网站主要是用手机访问的,图片比较多,太大的话网页刷的太慢了,wifi还好,2G 3G根本刷不出来

阅读 10.4k
15 个回答

libjpeg是广泛使用的开源JPEG图像库(参考 http://en.wikipedia.org/wiki/Libjpeg ),安卓也依赖libjpeg来压缩图片。通过查看源码,我们会发现安卓并不是直接封装的libjpeg,而是基于了另一个叫Skia的开源项目(http://en.wikipedia.org/wiki/Skia_Graphics_Engine)来作为的图像处理引擎。Skia是谷歌自己维护着的一个大而全的引擎,各种图像处理功能均在其中予以实现,并且广泛的应用于谷歌自己和其它公司的产品中(如:Chrome、Firefox、Android等)。Skia对libjpeg进行了良好的封装,基于这个引擎可以很方便为操作系统、浏览器等开发图像处理功能。详细说明:http://blog.sina.com.cn/s/blog_12ce70a430102v1p3.html

源代码:https://github.com/bither/bither-android-lib

如果是网页素材(别告诉我是内容的图片)建议用CSS sprite,CSS sprite加载一次图片好过加载几次(长痛不如短痛),还有一些js&css库最好用国内七牛,又拍,百度&yepcdn的..国外的用cdnjs...

www.tinypng.com
不谢

应该要在图片上传的时候生成相应的缩略图,然后手机访问的时候先给缩略图,在用户点开图片时再给大图

这个应该是服务端的事情。 直接用js压缩上传的文件这个我不清楚。
在服务端的话, 可以在接受发送过来的post请求的时候, 执行压缩图片的任务流, 把上传的图片都压缩了。 然后后续的访问就直接下载压缩后的图片。
除了压缩图片, 在web端还有一些加速网站启动速度的技术。 比如CSS sprite, lazyload.合并压缩js和css代码。

一般公式都会有图片存储平台吧,前台传递的图片,后台处理后会保存几种像素大小的。

新手上路,请多包涵

可以用光影魔术手,简单快捷批量操作

如果没什么开发能力的话,建议用又拍or七牛云存储就可以了,它们都自带了缩略图功能
上传图片以后,前端用后缀直接调用缩略图就行了,简单方便,不需要技术含量

顺带就是他们的流入流量都是不计费的,不过存储空间计费

我知道有个很强大的工具 ImageMagick。

就题主的需求而言,使用NginxHttpImageFilterModule是再适合不过的了。
网上有很多不错的经验谈

注意到题主加的标签里有java,我这里正好有相关的实现,用的是:

<dependency>
    <groupId>net.coobird</groupId>
    <artifactId>thumbnailator</artifactId>
    <version>0.4.8</version>
</dependency>

sample:

Thumbnails.of(inputStream).size(150, 150).keepAspectRatio(false).outputQuality(1.0d).toFile(new File(path));

当然,自己写兴许会更好一些,但我自己尝试后出现了效果、效率、CMYK等问题。

新手上路,请多包涵

七牛 客户端直传 比较快。 3M左右的都可以在客户端直接上传服务器!

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏