如题,网站主要是用手机访问的,图片比较多,太大的话网页刷的太慢了,wifi还好,2G 3G根本刷不出来
如果是网页素材(别告诉我是内容的图片)建议用CSS sprite,CSS sprite加载一次图片好过加载几次(长痛不如短痛),还有一些js&css库最好用国内七牛,又拍,百度&yepcdn的..国外的用cdnjs...
这个应该是服务端的事情。 直接用js压缩上传的文件这个我不清楚。
在服务端的话, 可以在接受发送过来的post请求的时候, 执行压缩图片的任务流, 把上传的图片都压缩了。 然后后续的访问就直接下载压缩后的图片。
除了压缩图片, 在web端还有一些加速网站启动速度的技术。 比如CSS sprite, lazyload.合并压缩js和css代码。
如果没什么开发能力的话,建议用又拍or七牛云存储就可以了,它们都自带了缩略图功能
上传图片以后,前端用后缀直接调用缩略图就行了,简单方便,不需要技术含量
顺带就是他们的流入流量都是不计费的,不过存储空间计费
压缩图片从前端这边,知道的有两种方法:
针对于上传图片的:http://segmentfault.com/q/1010000002550047/a-1020000002550069
现在新出来了一个版本: localResizeIMG3
针对于项目里使用到的图片的:
通过grunt发布程序时自动运行一个任务去压缩图片,这种方法是一直在用的
详细内容见:grunt-contrib-imagemin
需要你根据介绍配置到你自己的项目里面
就题主的需求而言,使用Nginx
的HttpImageFilterModule是再适合不过的了。
网上有很多不错的经验谈。
注意到题主加的标签里有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等问题。
8 回答4.8k 阅读✓ 已解决
3 回答2.7k 阅读✓ 已解决
6 回答3.5k 阅读✓ 已解决
3 回答4.2k 阅读✓ 已解决
5 回答2.9k 阅读✓ 已解决
5 回答6.4k 阅读✓ 已解决
4 回答2.3k 阅读✓ 已解决
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