使用java.awt.RenderingHints类设置参数,改善图片质量

使用java.awt.RenderingHints类设置参数,改善图片质量

 

如果想设置几个呈现提示(RenderingHints),可以多次调用setRenderHint,或者创建值的完整映射,并使用Graphics2D的setRenderingHints方法一次把它们都设置好。

java.awt.RenderingHints类 javadoc文档连接:
http://gceclub.sun.com.cn/Java_Docs/jdk6/docs/zh/api/java/awt/RenderingHints.html

一般使用的代码如下:

RenderingHints rh = new  RenderingHints(RenderingHints. KEY_ANTIALIASING,
                                                        RenderingHints. VALUE_ANTIALIAS_ON);
rh.put(RenderingHints.KEY_STROKE_CONTROL
              , RenderingHints.VALUE_STROKE_PURE);
rh.put(RenderingHints.KEY_ALPHA_INTERPOLATION
              , RenderingHints.ALPHA_INTERPOLATION_QUALITY);
g2d.setRenderingHints(rh);

找出一个给定系统的方法是判断特定的绘制硬件(比如显卡)在系统中是否可用,假设有一个假想的isAccelerated方法告诉系统是否可以使用一种类型的图像加速。下面的代码允许根据isAccelerated方法的结果来设置提示:
// 假设renderQuality是RenderingHints的私有类成员
if (isAccelerated()) {
       renderQuality
=new RenderingHints(RenderingHints. KEY_RENDERING, 
                                                               RenderingHints. VALUE_RENDER_QUALITY);
}
else {
       renderQuality
=new RenderingHints(RenderingHints. KEY_RENDERING, 
                                                               RenderingHints. VALUE_RENDER_SPEED);
}

这样设置后比没有设置效果会好点。但是和acdsee等图片工具看起来还有差距。比较奇怪还需要设置什么参数才能优化图片质量。。。

另外,关于性能今天看到的一篇文章有点作用。。
现在图片预览一样存在Jprofile的大量内存使用的问题.
看到javatar的blog: http://javatar.javaeye.com/blog/41098
提及使用第三方的包 JMagicK: http://www.yeo.id.au/jmagick/ (Java接口)
生成图片预览的方法,因为目前项目面临上线的压力如果改变另外一种实现方式等于是从根部重构,面临测试的压力。。

你可能感兴趣的:(使用java.awt.RenderingHints类设置参数,改善图片质量)