项目实战之中小网站图片压缩技术

标签: 项目 网站 图片 | 发表时间:2014-04-11 03:20 | 作者:hacke2
出处:http://blog.csdn.net

接着上一篇 项目实战之中小网站数据缓存的设计与实现 ,我们继续讨论在邻水项目中其他对于中小网站要用到的技术。

 

由于我们的项目服务器空间有限,如果每次上传图片都大于1M那上传几张图片,空间就满了,而且访问速度也慢。我们采取图片压缩技术,在首页展示的时候进行深压缩处理,对文章里面的图片进行浅压缩处理。

 

我们文件上传统一是由SystemFileService处理,当为图片时,执行uploadImg(...)方法。

 

其核心代码如下

 

public SystemFile uploadImg(FileTransfer fileTransfer ,String createrId){

String filePath = null;

String mimeType = null;

try {

mimeType = fileTransfer.getMimeType();

mimeType = mimeType == null ? "" : mimeType.toUpperCase();

if(mimeType.indexOf("IMAGE") < 0){//不是图片文件

return null;

}


filePath = FileUtil.saveImg(fileTransfer.getInputStream(),400);

...

}


 

当判断是一个图片时,调用FileUtil的静态方法,saveImg,传入的参数有两个,第一个是图片流,第二个是宽或高的最大长度,核心代码如下:

 

BufferedImage bi = ImageIO.read(inputStream);//读取图片流

double ratio = 1.0;//压缩比例

int w = bi.getWidth();//上传图片的宽度

int h = bi.getHeight();//上传图片的高度

 

ratio = (w > h ? w : h)/*长或宽,取最长那个。*/ > limit/*如果最长的大于限制长度*/ ? (limit/(w > h ? w : h))/*true 算出压缩比例*/ : ratio/*false 不压缩*/;//

int newW = (int)Math.floor(w * ratio),newH = (int)Math.floor(h * ratio);//算出压缩后的长宽

BufferedImage tag = new BufferedImage(newW,newH,BufferedImage.TYPE_INT_RGB);

Graphics g = tag.getGraphics();//画图

g.drawImage(bi.getScaledInstance(newW, newH, BufferedImage.SCALE_SMOOTH), 0, 0,null);//getScaledInstance 将图片放大或者缩小  BufferedImage.SCALE_SMOOTH 平滑一点,图片质量好点,但是效率要慢一点。

g.dispose();//释放资源。

ImageIO.write(tag, "JPEG",file);//画好了之后 写到文件file里面数据格式为 JPEG


 

每一句话后面都加了注释,相信读者可以看懂,这样,在上传显示图片的时候大小就传为400,传文章内容的时候图片大小就传为100,这样就实现了图片压缩。

 

作者:hacke2 发表于2014-4-10 19:20:30 原文链接
阅读:50 评论:0 查看评论

相关 [项目 网站 图片] 推荐:

项目实战之中小网站图片压缩技术

- - CSDN博客推荐文章
接着上一篇 项目实战之中小网站数据缓存的设计与实现 ,我们继续讨论在邻水项目中其他对于中小网站要用到的技术. 由于我们的项目服务器空间有限,如果每次上传图片都大于1M那上传几张图片,空间就满了,而且访问速度也慢. 我们采取图片压缩技术,在首页展示的时候进行深压缩处理,对文章里面的图片进行浅压缩处理.

网站项目必备——12款白富美型 jQuery 图片轮播插件

- - 博客园_梦想天空
  图片轮播是网站中的常用功能,用于在有限的网页空间内展示一组产品图片或者照片,同时还有非常吸引人的动画效果. jQuery 图片轮播效果插件,帮助你在你的项目中加入一些效果精美的图片轮播效果,希望这些插件能够帮助到你. 首先推荐的这款插件号称世界上最棒的图片轮播插件,有独立的. WordPress 插件两个版本.

十问Web网站项目

- - 博客园_新闻
英文原文: 10 Important Questions to Ask About Your Next Website Project. Ltd 开发者 Richa Jain 在本文中为我们带来了一个有趣的话题:在一个 Web 网站项目中,我们应该问自己十个这样的问题. 如果你在开发的过程中存在疑惑,或许你可以在本文中获得帮助.

android 图片加载和缓存开源项目 Picasso

- - 移动开发 - ITeye博客
Picasso – Android系统的图片下载和缓存类库. Picasso 是Square开源的一个用于Android系统下载和缓存图片的项目. 该项目和其他一些下载图片项目的主要区别之一是:使用4.0+系统上的HTTP缓存来代替磁盘缓存. Picasso 的使用是非常简单的,例如:. 处理Adapter中的 ImageView 回收和取消已经回收ImageView的下载进程.

Kickstarter 网站项目支持人数已达100万人

- guangtao - FeedzShare
来自: tech2ipo - FeedzShare  . 发布时间:2011年10月13日,  已有 2 人推荐. 创立仅2年,在线众筹服务商Kickstarter已有100万人注册,并承诺对各种类型、规模的项目提供金融支持. 该网站旨在帮助有创意人士筹集资金,创意涉及美术设计、音乐视频、有图小说、城市农场以及DIY计算机硬件.

Amoeba+rose:开源项目搭建大型网站可扩展构架实记

- corleone1969 - 五四陈科学院-坚信科学,分享技术
以下内容由[五四陈科学院]提供. java是一把双刃剑,可以很重地伤人,亦可很重地自伤. 曾在一处见到,淘宝在长期使用java构建web项目后,得出一个结论:积重难返. 实际工作经验得到的结论,积重难返的原因,往往不是java本身的缘故,而是团队成员基础积累参差不齐,许多次的“一不小心”积累成了最终的结果.

网站推荐:11个相似图片搜索网站(以图找图)

- slackware - FeedzShare
来自: 有意思吧 - FeedzShare  . 发布时间:2011年03月06日,  已有 6 人推荐. 你想凭着一张现有图片找出它的原始图片,或者是凭着一张小的缩略图找出原始大图吗. 下面的十款搜索引擎可以帮你实现,以图找图,以图搜图,以图片搜索相似的图片. 一:http://tineye.com/.

32个使用大图片为背景的网站设计

- Kione - 创意悠悠花园
在以前带宽不充足的情况下,网站的背景尽量会使用纯色或者小图,但目前带宽在不断的增加,那使用大图作背景的网站也越来越多了,今天就分享:32个使用大图片为背景的网站设计,希望其中有你喜欢的,或者可以给你带来灵感的. Read the rest of 32个使用大图片为背景的网站设计 (20 words).

几张关于网站设计开发的图片

- 林十四 - 互联网的那点事
© 推荐 for 互联网的那点事, 2011. Post tags: 网站设计开发. 在线制作有趣图片网站 Photo Funia 让你简单2步成为PS高手. CSS开发辅助工具 – TopStyle绿色版 (@portablesoft). 东西方文化对网站设计的影响 有些相似,但也有不同. 网站设计中的面包屑:实例与最佳实践.

转“国内图片网站yupoo的架构”-迷梦江南...

- - 网站架构_搜搜博客搜索
  .NET-C# 高级技术群:16750189,湖南IT交流群:91576466,欢迎您加入.   本文转自:http://www.cnblogs.com/lonelysharer/archive/2011/1 1/10/2243828.html.   之前向大家介绍过全球最大在线图片服务网站Flickr网站架构,Yupoo(又拍网)作为国内最大的图片服务提供商,我们也一起来看看它的架构,同样是提供图片服务,看看他与Flickr的差别在哪里,大家看完本文可以思考一下.