论坛首页 Java企业应用论坛

在J2EE应用中要用缩放图片技术,但处理这个用JAVA来好像性能不行

浏览 6581 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2012-09-22  
现状:
图片存放在A主机上,目前保存的图片容量超过了3T,每张图片大概200+KB,1000+的分辨率。WEB应用在B主机上。目前上传图片到A机上的来源可能有三处:A程序、B程序和WEB应用。

本次WEB应用升级的的其中一个问题就是缩略图,因为现在WEB应用直接请求这些图片到客户端,使页面非常的卡,所以以后上传图片时同时对该图片进行一个缩略图的保存。就如上面提到的,上传的来源可能有三处,所以最好的办法就是监听A机上的FTP,如果有上传图片的请求,就同时对该图片进行缩略图处理。

基于上面的分析,我想到了apache ftp server,粗略的看了下文档,好像是可以写Listener来监听command的。但我还不了解这个ftp在性能方面怎么样? 目前我们的应用的并发量大概是50~100,FTP只做上传,不用于下载。

另一个问题就是用java来处理图片的效率非常低,把一张1000+分辨率的图片压缩为100+分辨率,同时处理10张要40+秒,内存貌似也涨得厉害,如果这程序放在j2ee的Filter里用的话还heap溢出,估计得调大heap。不知道这个数据是否在接受范围内,所以打算用java来调用C/C++的库来处理图片压缩。


请大家帮忙分析上面的方案是否可行或有什么更好的方案,感激不尽!!!
   发表时间:2012-09-22  
1、可以考虑 使用ImageMagick  之前就使用这个做缩略图
2、可以考虑lazy 生成缩略图
    请求url格式 img_width_height  如果根据这个查找图片没有 则重新生成;否则返回这个图片。
0 请登录后投票
   发表时间:2012-09-22  
jinnianshilongnian 写道
1、可以考虑 使用ImageMagick  之前就使用这个做缩略图
2、可以考虑lazy 生成缩略图
    请求url格式 img_width_height  如果根据这个查找图片没有 则重新生成;否则返回这个图片。


2是当客户端去请求这个图片,然后判断该图有没有缩略图,没有就生成,是这个意思吗?
一开始我也是想用这个方案的,但关键是同时一次处理20张图片的缩略图需要太久了,有考虑调用C/C++来提升效率,但好像就算是目前现成的一些转换工具处理20张图片也需要个10秒这样吧,10秒对客户端用户来说太久了- -!

我去看看ImageMagick,呵呵
0 请登录后投票
   发表时间:2012-09-22  
kyousuke_rin 写道
jinnianshilongnian 写道
1、可以考虑 使用ImageMagick  之前就使用这个做缩略图
2、可以考虑lazy 生成缩略图
    请求url格式 img_width_height  如果根据这个查找图片没有 则重新生成;否则返回这个图片。


2是当客户端去请求这个图片,然后判断该图有没有缩略图,没有就生成,是这个意思吗?
一开始我也是想用这个方案的,但关键是同时一次处理20张图片的缩略图需要太久了,有考虑调用C/C++来提升效率,但好像就算是目前现成的一些转换工具处理20张图片也需要个10秒这样吧,10秒对客户端用户来说太久了- -!

我去看看ImageMagick,呵呵

1、老的图片lazy  或者写个压缩脚本先压缩
2、新的图片上传后直接压缩  或采用 年/月/日/时 存  做定时任务压缩
3、上传后可以考虑队列(把要压缩的放入一个队列) 启动一个线程压缩
0 请登录后投票
   发表时间:2012-09-22  
jinnianshilongnian 写道
kyousuke_rin 写道
jinnianshilongnian 写道
1、可以考虑 使用ImageMagick  之前就使用这个做缩略图
2、可以考虑lazy 生成缩略图
    请求url格式 img_width_height  如果根据这个查找图片没有 则重新生成;否则返回这个图片。


2是当客户端去请求这个图片,然后判断该图有没有缩略图,没有就生成,是这个意思吗?
一开始我也是想用这个方案的,但关键是同时一次处理20张图片的缩略图需要太久了,有考虑调用C/C++来提升效率,但好像就算是目前现成的一些转换工具处理20张图片也需要个10秒这样吧,10秒对客户端用户来说太久了- -!

我去看看ImageMagick,呵呵

1、老的图片lazy  或者写个压缩脚本先压缩
2、新的图片上传后直接压缩  或采用 年/月/日/时 存  做定时任务压缩
3、上传后可以考虑队列(把要压缩的放入一个队列) 启动一个线程压缩


请问我要如何知道图片被上传了呢?上传的来源有三处,我不能去这三处来源那里改代码先做压缩再上传,所以最好是能监听FTP,ftp工具好像没这个功能吧? 关于这个有什么解决办法吗?
0 请登录后投票
   发表时间:2012-09-22  
1、请问我要如何知道图片被上传了呢?上传的来源有三处,我不能去这三处来源那里改代码先做压缩再上传,所以最好是能监听FTP,ftp工具好像没这个功能吧? 关于这个有什么解决办法吗?  无
2、上传有三处? 不能集中到一处吗? 专门设置个上传服务器中转(或者主动触发一个内部请求要求压缩)
0 请登录后投票
   发表时间:2012-09-22  
jinnianshilongnian 写道
1、请问我要如何知道图片被上传了呢?上传的来源有三处,我不能去这三处来源那里改代码先做压缩再上传,所以最好是能监听FTP,ftp工具好像没这个功能吧? 关于这个有什么解决办法吗?  无
2、上传有三处? 不能集中到一处吗? 专门设置个上传服务器中转(或者主动触发一个内部请求要求压缩)


三处并不是地方不同而已,而是应用不同。
第一个是营业厅使用了高拍仪,然后上传
第二个是数据处理中心使用了扫描仪,用一个C++的软件扫描上传
第三个就是WEB系统本身的上传

所以没办法在客户端进行压缩然后上传,只能在FTP的机器上做压缩,但要能知道何时客户端有图片上传来才行,这个苦恼啊
0 请登录后投票
   发表时间:2012-09-22  
0、营业厅使用了高拍仪/扫描仪,用一个C++的软件扫描上传  这个不能改了是吧? 比如上传地址?
1、只有web系统使用缩略图吧。
0 请登录后投票
   发表时间:2012-09-22  
jinnianshilongnian 写道
0、营业厅使用了高拍仪/扫描仪,用一个C++的软件扫描上传  这个不能改了是吧? 比如上传地址?
1、只有web系统使用缩略图吧。


高拍仪和扫描仪这两个只是负责上传而已,浏览缩略图的只有web系统,上传地址都是从数据库里读的。

也就是压缩图片的这个程序应该是放在装有FTP的A主机上,然后检测到有客户端上传图片到A机上了就进行压缩,问题就是如何知道有图片上传上来了?怎么监听FTP?
0 请登录后投票
   发表时间:2012-09-22  
kyousuke_rin 写道
jinnianshilongnian 写道
0、营业厅使用了高拍仪/扫描仪,用一个C++的软件扫描上传  这个不能改了是吧? 比如上传地址?
1、只有web系统使用缩略图吧。


高拍仪和扫描仪这两个只是负责上传而已,浏览缩略图的只有web系统,上传地址都是从数据库里读的。

也就是压缩图片的这个程序应该是放在装有FTP的A主机上,然后检测到有客户端上传图片到A机上了就进行压缩,问题就是如何知道有图片上传上来了?怎么监听FTP?


1、高拍仪和扫描仪这两个只是负责上传而已,浏览缩略图的只有web系统,上传地址都是从数据库里读的。   上传地址能不能改成 http上传

2、两台设备能否修改 去 主动触发一个http 请求
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics