欢迎光临
我们一直在努力

J2EE搭建WAP站点时图片发布统一格式处理解决方案-JSP教程,J2EE/EJB/服务器

建站超值云服务器,限时71元/月

 

motivation:
     在wml中,由于支持的浏览器不同,对于图片格式也有不同的限制。比如常见的m3gate,目前主要支持的是bng格式,有的浏览器支持的是jpg的格式。但是如果图片不是自己加工的,比如是通过网页采集工具采集过来的图片格式各不相同,这样就需要在发布的时候进行统一的格式处理。
     在这里,由于个人一直从事的是j2ee的研发,所以在发布图片的时候都是采用servlet来发布的图片,为了解决wap中遇到的这个挑战,做了一些比较深入的研究。下面是整理后的解决方案(已经实现),来完成图片发布时统一图片格式。

solutions:
     在j2ee的web应用中,常见的规范是servlet规范,由于目前主流的应用服务器都支持servlet2.3规范,所以本方案的基本就是servlet2.3规范,利用servlet2.3中的filter特性来过滤图片内容,整合图片格式。下面是具体的解决方案(假设用来发布图片的servlet是getimage):

  •  提供前置的filter(imageprefilter)
    在getimage前面配置前置的filter,在客户端访问图片的时候,拦截客户端的请求,生成一个新的servletresponse对象传递给getimage。
  • 提供后置的filter(imagepostfilter)
    在getimage上面配置后置的filter,拦截getimage的返回结果,同时根据getimage的返回结果,将图片转换成统一的格式返回给客户端。
  • 外部实现httpservletresponse类(imagehttpservletresponse)
    保存web container的httpservletresponse以及getimage这个servlet输出到response对象中的信息,如cookie,header,contenttype等。
  • 外部实现outputstream类(imageoutputstream)
    在imagehttpservletresponse类获取outputstream的时候,返回一个自己定义的imageoutputstream,imageoutputstream将getimage这个servlet中输出的所有二进制数据保存起来(可以使用java.nio.bytebuffer)

     下面是整个体系的调用逻辑图:
      
      
      下面介绍一些如何利用imageio对象来处理图片格式:

  • 从输入流中读取出一个bufferedimage对象:
    bytearrayinputstream bin = new bytearrayinputstream(outputstream.getbytes());
    bufferedimage src = imageio.read(bin);
  • 利用imageio.write方法,将图片转换成指定的格式并写入到指定的流中:
    imageio.write(bimage,”png”,outs);

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » J2EE搭建WAP站点时图片发布统一格式处理解决方案-JSP教程,J2EE/EJB/服务器
分享到: 更多 (0)

相关推荐

  • 暂无文章