项目实训-千寻-服务端图片处理优化

在我们的项目中,涉及到大量的图片传输。包括用户发布的需求、用户分享的信息等,无一不是图片为主的形式。因此,解决图片问题,是服务端的重要问题。
关于图片的处理方式,主要有两种方案,一个是压缩存储,分成原图与缩略图两套图片;另一个是搭建Nginx反向代理服务器,分担图片传输压力。


图片压缩
针对图片进行压缩,形成指定格式的小图片。此处给出代码:
/**
 * 保持宽高比压缩图片,使之恰好嵌入到边界矩形<br>
 * (转换参考:Image=ImageIcon.getImage,ImageIcon=new ImageIcon(Image)。)
 * 
 * @param image_input
 *            要压缩的图片对象
 * @param rect_width
 *            边界矩形的宽
 * @param rect_hight
 *            边界矩形的高
 * @return 压缩后的图片
 */
public static Image ZipImage(Image image_input, int rect_width, int rect_hight) {
	ImageIcon image = new ImageIcon(image_input);
	// 如果图片宽度大于rect_width,保持宽高比压缩宽至rect_width
	if (image.getIconWidth() > rect_width) {
		int image_hight = (int) (image.getIconHeight() * ((double) rect_width / image.getIconWidth()));
		image.setImage(image.getImage().getScaledInstance(rect_width, image_hight, Image.SCALE_DEFAULT));
	}
	// 如果压缩后图片高度超过rect_hight,保持宽高比将高度压缩至rect_hight(此时宽一定小于rect_hight)
	if (image.getIconHeight() > rect_hight) {
		int image_hight = (int) (image.getIconWidth() * ((double) rect_hight / image.getIconHeight()));
		image.setImage(image.getImage().getScaledInstance(image_hight, rect_hight, Image.SCALE_DEFAULT));
	}
	return image.getImage();
}
然后,在传输时,区分情况,根据不同的请求,给予不同的图片地址进行返回。


Nginx反向代理服务器
反向代理方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。
图片服务器的优势
1.分担Web服务器的I/O负载-将耗费资源的图片服务分离出来,提高服务器的性能和稳定性。
2.能够专门对图片服务器进行优化-为图片服务设置有针对性的缓存方案,减少带宽成本,提高访问速度。
3.提高网站的可扩展性-通过增加图片服务器,提高图片吞吐能力。
图片服务器的注意事项
1.选择适合图片存储的物理介质和文件系统
2.使用物理上独立的服务器
3.如果拥有多台图片服务器,要考虑服务器之间的图片同步问题
4.使用独立域名
5.制定合理的缓存策略
6.使用图片处理模块对用户上传的图片进行再加工
配置方式参考:
http://www.open-open.com/lib/view/open1417488526633.html


后来我们经过分析,使用了图片压缩的机制。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值