java制作海报六:Graphics2D的RenderingHints方法参数详解,包括解决文字不清晰,抗锯齿问题

简介: 这篇文章是关于如何在Java中使用Graphics2D的RenderingHints方法来提高海报制作的图像质量和文字清晰度,包括抗锯齿和解决文字不清晰问题的技术详解。

前言

  1. 文字换行算法详解,传送门:java制作海报一:java使用Graphics2D 在图片上写字,文字换行算法详解
  2. 头像切割成圆形方法详解,传送门:java制作海报二:java使用Graphics2D 在图片上合成另一个照片,并将照片切割成头像,头像切割成圆形方法详解
  3. 获取微信二维码详情,传送门:java制作海报三:获取微信二维码详情,并改变大小,合成到海报(另一张图片)上
  4. java BufferedImage 转 InputStreampng 图片合成到模板(另一个图片)上时,透明部分变成了黑色,传送门:java制作海报四:java BufferedImage 转 InputStream 上传至OSS。png 图片合成到模板(另一个图片)上时,透明部分变成了黑色
  5. java 整合echarts 画出 折线图,传送门:
  6. Graphics2D的RenderingHints方法参数详解,包括解决文字不清晰,抗锯齿问题,传送门:java制作海报六:Graphics2D的RenderingHints方法参数详解,包括解决文字不清晰,抗锯齿问题
  7. 项目部署到linux下中文不显示,echarts图上的中文也不显示问题,传送门:java制作海报七:java Graphics2D 合成图片 在 linux下中文不显示,echarts图上的中文也不显示问题
  • 这里的代码都在上面的 GitHub

一、需求描述

在 使用 java Graphics2D 进行画图时,有一个配置如下:
在这里插入图片描述
这个方法g2d.setRenderingHint()配置很常见,这个配置也很重要,可以配置抗锯齿,使图片合成变的清晰,不再失真。
以下配置,也可以进行对文字进行配置抗锯齿,解决不清晰问题。

这个方法的配置项,是key value的形式。
下面进行配置项讲解

二、RenderingHints 配置详解

RenderingHints 类定义了多种着色微调,它们存储在一个映射集的 Graphics2D 对象里。setRenderingHint() 方法的参数是一个键值对的形式。

下面详细介绍各个常用键值的含义:

  1. KEY_ANTIALIASING 决定是否使用抗锯齿。当着色有倾斜角度的线时,通常会得到一组阶梯式的像素排列,使这条线看上去不平滑,经常被称为 锯齿状图形。抗锯齿是一种技术,它设置有倾斜角度的线的像素亮度,以使线看起来更平滑。因此,这个微调是用来决定在着色有倾斜角度的线时是否在减少锯齿状图形上花费时间。可能的值有 VALUE_ANTIALIAS_ON(使用抗锯齿)、VALUE_ANTIALIAS_OFF(不使用抗锯齿) 和 VALUE_ANTIALIAS_DEFAULT(默认的抗锯齿)

  2. KEY_COLOR_RENDERING 控制颜色着色的渲染方式。可能的值有 VALUE_COLOR_RENDER_SPEED(追求速度)、VALUE_COLOR_RENDER _QUALITY(追求质量) 和 VALUE_COLOR_RENDER_DEFAULT(默认)

  3. KEY_DITHERING 控制如何处理抖动。抖动是用一组有限的颜色合成出一个更大范围的颜色的过程,方法是给相邻像素着色以产生不在该组颜色中的新的颜色幻觉。可能的值有 VALUE_DITHER_ENABLE(不抖动)、VALUE_DITHER _DISABLE (抖动)和 VALUE_DITHER_DEFAULT(默认)

  4. KEY_FRACTIONALMETRICS 字体规格。可能的值有VALUE_FRACTIONALMETRICS_ON(启用字体规格)、VALUE_FRACTIONALMETRICS_OFF(禁用字体规格) 和VALUE_FRACTIONALMETRICS _DEFAULT(默认)

  5. KEY_INTERPOLATION 确定怎样做内插。在对一个源图像做变形时,变形后的像素很少能够恰好对应目标像素位置。在这种情况下,每个变形后的像素的颜色值不得不由周围的像素决定。内插就是实现上述过程。有许多可用的技术,可能的值,按处理时间从最多到最少,是 VALUE_INTERPOLATION_BICUBIC、 VALUE_INTERPOLATION_BILINEAR 和 VALUE_INTERPOLATION_NEAREST_NEIGHBOR

  6. KEY_RENDERING 确定着色技术,在速度和质量之间进行权衡。可能的值有 VALUE_RENDERING_SPEED(追求速度)、VALUE_RENDERING _QUALITY(追求质量) 和VALUE_RENDERING_DEFAULT(默认)

  7. KEY_TEXT_ANTIALIASING 确定对文本着色时是否抗锯齿。可能的值有 VALUE_TEXT_ANTIALIASING_ON(使用抗锯齿呈现文本)、VALUE_TEXT_ANTIALIASING _OFF (不使用抗锯齿呈现文本)和VALUE_TEXT_ANTIALIASING _DEFAULT(使用平台默认的文本抗锯齿模式呈现文本)

  8. KEY_ALPHA_INTERPOLATION 代表 alpha 合成微调的键,该微调可能的值有 VALUE_ALPHA_INTERPOLATION_SPEED(追求速度)、VALUE_ALPHA_INTERPOLATION_QUALITY(追求质量)和VALUE_ALPHA_INTERPOLATION_DEFAULT,代表平台缺省值。

  9. KEY_STROKE_CONTROL 笔划规范化控制,可能有的值有VALUE_STROKE_NORMALIZE、VALUE_STROKE_PURE和VALUE_STROKE_DEFAULT

相关文章
|
23小时前
|
算法 Java Linux
java制作海报七:java Graphics2D 合成图片 在 linux下中文不显示,echarts图上的中文也不显示问题
这篇文章讨论了在Linux环境下使用Java Graphics2D合成图片时遇到的中文显示问题,并提供了解决方案,包括如何在Linux系统中添加中文字体库。
java制作海报七:java Graphics2D 合成图片 在 linux下中文不显示,echarts图上的中文也不显示问题
|
23小时前
|
算法 Java Linux
java制作海报二:java使用Graphics2D 在图片上合成另一个照片,并将照片切割成头像,头像切割成圆形方法详解
这篇文章介绍了如何使用Java的Graphics2D类在图片上合成另一个照片,并将照片切割成圆形头像的方法。
java制作海报二:java使用Graphics2D 在图片上合成另一个照片,并将照片切割成头像,头像切割成圆形方法详解
|
23小时前
|
算法 Java Linux
java制作海报五:java 后端整合 echarts 画出 折线图,项目放在linux上,echarts图上不显示中文,显示方框口口口
这篇文章介绍了如何在Java后端整合ECharts库来绘制折线图,并讨论了在Linux环境下ECharts图表中文显示问题。
|
23小时前
|
算法 Java Linux
java制作海报四:java BufferedImage 转 InputStream 上传至OSS。png 图片合成到模板(另一个图片)上时,透明部分变成了黑色
这篇文章主要介绍了如何将Java中的BufferedImage对象转换为InputStream以上传至OSS,并解决了png图片合成时透明部分变黑的问题。
|
23小时前
|
算法 小程序 Java
java制作海报三:获取微信二维码详情,并改变大小,合成到海报(另一张图片)上
这篇文章介绍了如何使用Java获取微信小程序的二维码,并将其调整大小后合成到海报(另一张图片)上。
|
文字识别 Java BI
java文字识别技术(亲测,识别率很高)
java文字识别程序的关键是寻找一个可以调用的OCR引擎。tesseract-ocr就是一个这样的OCR引擎,在1985年到1995年由HP实验室开发,现在在Google。tesseract-ocr 3.0发布,支持中文。
7029 0
|
8天前
|
Java 关系型数据库 MySQL
如何用java的虚拟线程连接数据库
本文介绍了如何使用Java虚拟线程连接数据库,包括设置JDK版本、创建虚拟线程的方法和使用虚拟线程连接MySQL数据库的示例代码。
20 6
如何用java的虚拟线程连接数据库
|
4天前
|
监控 Java Linux
Java 性能调优:调整 GC 线程以获得最佳结果
Java 性能调优:调整 GC 线程以获得最佳结果
34 11
|
1天前
|
并行计算 Java 调度
深入理解Java中的多线程编程
【10月更文挑战第6天】 本文将探讨Java中多线程编程的基本概念、实现方式及其在实际项目中的应用。通过详细的示例和解释,读者能够掌握如何在Java中有效地使用多线程来提高程序的性能和响应能力。
4 1
|
2天前
|
Java 开发者
在 Java 多线程编程中,Lock 接口正逐渐取代传统的 `synchronized` 关键字,成为高手们的首选
【10月更文挑战第6天】在 Java 多线程编程中,Lock 接口正逐渐取代传统的 `synchronized` 关键字,成为高手们的首选。相比 `synchronized`,Lock 提供了更灵活强大的线程同步机制,包括可中断等待、超时等待、重入锁及读写锁等高级特性,极大提升了多线程应用的性能和可靠性。通过示例对比,可以看出 Lock 接口通过 `lock()` 和 `unlock()` 明确管理锁的获取和释放,避免死锁风险,并支持公平锁选择和条件变量,使其在高并发场景下更具优势。掌握 Lock 接口将助力开发者构建更高效、可靠的多线程应用。
8 2