RenderingHints 类定义了多种着色微调,它们存储在一个映射集的 Graphics2D 对象里。 setRenderingHint() 方法的参数是一个键以及对应的键值。在我们的代码中,第一个参数是代表 alpha 合成微调的键,第二个参数是该微调的值。该微调的其它可能的值有 VALUE_ALPHA_INTERPOLATION_DEFAULT,代表平台缺省值;以及 VALUE_ALPHA_INTERPOLATION_SPEED,代表追求速度而不是质量。

  您还可以为下面的键提供微调:

  键描述KEY_ANTIALIASING决定是否使用抗锯齿。当着色有倾斜角度的线时,通常会得到一组阶梯式的像素排列,使这条线看上去不平滑,经常被称为 锯齿状图形抗锯齿是一种技术,它设置有倾斜角度的线的像素亮度,以使线看起来更平滑。因此,这个微调是用来决定在着色有倾斜角度的线时是否在减少锯齿状图形上花费时间。可能的值有 VALUE_ANTIALIAS_ON, _OFF_DEFAULT。KEY_COLOR_RENDERING控制颜色着色的方式。可能的值有 VALUE_COLOR_RENDER_SPEED, _QUALITY_DEFAULT。KEY_DITHERING控制如何处理抖动。抖动是用一组有限的颜色合成出一个更大范围的颜色的过程,方法是给相邻像素着色以产生不在该组颜色中的新的颜色幻觉。可能的值有 VALUE_DITHER_ENABLE, _DISABLE_DEFAULT。KEY_FRACTIONALMETRICS控制显示文本的质量。可能的值有 VALUE_FRACTIONALMETRICS_ON, _OFF_DEFAULT。KEY_INTERPOLATION确定怎样做内插。
  
  在对一个源图像做变形时,变形后的像素很少能够恰好对应目标像素位置。在这种情况下,每个变形后的像素的颜色值不得不由四周的像素决定。
  
  内插就是实现上述过程。有许多可用的技术。可能的值,按处理时间从最多到最少,是 VALUE_INTERPOLATION_BICUBIC, _BILINEAR_NEAREST_NEIGHBOR。KEY_RENDERING确定着色技术,在速度和质量之间进行权衡。可能的值有 VALUE_RENDERING_SPEED, _QUALITY_DEFAULT。KEY_TEXT_ANTIALIASING确定对文本着色时是否抗锯齿。可能的值有 VALUE_TEXT_ANTIALIASING_ON, _OFF_DEFAULT

使用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接口)
生成图片预览的方法,因为目前项目面临上线的压力如果改变另外一种实现方式等于是从根部重构,面临测试的压力。。

RenderingHints 参数相关推荐

  1. java读图片显示到前端_java从前端获取参数添加到图片后返回整张图片

    java从前端获取参数添加到图片后返回整张图片 以后为整个servlet代码,请自行加入到j2ee工程. import java.awt.Color; import java.awt.Font; im ...

  2. 在Dockerfile中设置G1垃圾回收器参数

    在Dockerfile中设置G1垃圾回收器参数 ENV JAVA_OPTS="\ -server \ -XX:SurvivorRatio=8 \ -XX:+DisableExplicitGC ...

  3. Java Calendar.add()方法的使用,参数含义。指定时间差。

    cal.add()方法中的参数含义: 第一个参数如果是1则代表的是对年份操作,2是对月份操作,3是对星期操作,5是对日期操作,11是对小时操作,12是对分钟操作,13是对秒操作,14是对毫秒操作. 第 ...

  4. java带参数的方法笔记_具有Java参数的方法的类声明

    类声明可以包含在Java中具有参数的方法.演示此过程的程序如下: 示例class Message { public void messagePrint(String msg) { System.out ...

  5. Gin 框架学习笔记(02)— 参数自动绑定到结构体

    参数绑定模型可以将请求体自动绑定到结构体中,目前支持绑定的请求类型有 JSON .XML .YAML 和标准表单 form数据 foo=bar&boo=baz 等.换句话说,只要定义好结构体, ...

  6. VS Code 配置调试参数、launch.json 配置文件属性、task.json 变量替换、自动保存并格式化、空格和制表符、函数调用关系、文件搜索和全局搜索、

    1. 生成配置参数 对于大多数的调试都需要在当前项目目录下创建一个 lanch.json 文件,位置是在当前项目目录下生成一个 .vscode 的隐藏文件夹,在里面放置一些配置内容,比如:settin ...

  7. VS Code 安装插件、自定义模板、自定义配置参数、自定义主题、配置参数说明、常用的扩展插件

    1. 下载和官网教程 下载地址:https://code.visualstudio.com/ 官方教程:https://code.visualstudio.com/docs 2. 安装插件 安装扩展插 ...

  8. 浅显易懂 Makefile 入门 (08)— 默认 shell (/bin/sh)、命令回显、make参数(-n 只显示命令但不执行,-s 禁止所有回显)、单行命令、多行命令、并发执行

    1. shell 相关 1.1 默认 shell Makefile 所使用的命令是由 shell 命令行组成,他们是一条一条执行的. 多个命令之间要使用分号隔开,Makefile 中的任何命令都要以 ...

  9. Go 学习笔记(65)— Go 中函数参数是传值还是传引用

    Go 语言中,函数参数传递采用是值传递的方式.所谓"值传递",就是将实际参数在内存中的表示逐位拷贝到形式参数中.对于像整型.数组.结构体这类类型,它们的内存表示就是它们自身的数据内 ...

最新文章

  1. 让C/C++程序员告诉你什么叫浪漫,表白黑科技,炫酷多彩求爱利器
  2. 用javascript实现动态增加DataGrid行
  3. cocos android 剪切板,Cocos Creator 点击按钮复制到剪切版
  4. 【Spring 工厂】注入详解 — Set注入(JDK内置类型,用户自定义类型)、构造注入(重载)
  5. C++技巧:用kdevelop进行交叉编译的方法
  6. 【洛谷P2279】[HNOI2003]消防局的设立
  7. sql生成(查询数据的存储过程)代码的存储过程
  8. linux 多个文件中查找字符串
  9. php date日期相关函数
  10. oracle函数调用语法,simpleJdbcCall调用函数语法
  11. 计算机word插图教案,《在Word中插入图片》优秀教学设计范文
  12. 计算机除了冯诺依曼架构,什么是实用的非冯·诺依曼架构?
  13. Android中Style详解
  14. x64dbg 修改为dll_X64Dbg使用教程
  15. mysql状态表 历史记录设计表_常见数据库设计(2)——历史数据问题之单记录变更...
  16. AIML标签中srai不起作用的原因
  17. 订单紧急变动?交期无法确定?APS了解一下
  18. 集合 01集合的概念
  19. 海拔4000米计算机设备,普通笔记本海拔4000米以上就不灵了,西藏只能带固态硬盘笔记本!...
  20. 简述 Linux DRM 架构

热门文章

  1. java怎么来用urlrewrite伪静态化和urlrewrite的配置
  2. gvim在windows下中文乱码的终极解决方案
  3. [转]C# WinForm 关于窗体最大化时的是否全屏效果与是否遮盖任务栏
  4. USB基础---Linux USB驱动层次
  5. badboy 不支持html5,html5_iframe.htm
  6. python语言结构_Python语言表示语句结构时采用
  7. elasticsearch简单操作(一)
  8. 多个表关联的查询语句
  9. Python for in 问题
  10. 【剑指offer】反转链表,C++实现(链表)