java|java awt生成签名图片如何消除锯齿化
目录
- awt生成签名图片如何消除锯齿化
- 项目场景
- 问题描述
- 解决方案
- AWT,SWT缩小图片消除锯齿的平滑处理
- 缩小一副图片最常见的方法
awt生成签名图片如何消除锯齿化
项目场景
在一个线上互联网医院中,需要生成电子处方图片,图片里面会有医生的手写签名。通过java.awt的Graphics2D方式来生成处方图片,并将手写签名的图片导入其中。
问题描述
但是在签名图片导入后,就可以看到明显的锯齿。
具体导入图片代码:
g2.drawImage(getImage("https://xx.jpg", 100, 50), WIDTH - (LEVEL_PADDING + 9 * contentFontSize + contentFontSize / 2) + 5, height - bottomLine - (contentFontSize + LINE_SPACING + 15) + 5,100, 50, null);
private static BufferedImage getImage(String url) {if (Parameters.isEmpty(url)) return null; BufferedImage read = null; try {url = url.replaceFirst("https", "http"); read = ImageIO.read(new URL(url)); return read; } catch (IOException e) {e.printStackTrace(); }return null; }
效果如下:
文章图片
解决方案
修改代码如下:
g2.drawImage(getImage("https://xx.jpg", 100, 50), WIDTH - (LEVEL_PADDING + 9 * contentFontSize + contentFontSize / 2) + 5, height - bottomLine - (contentFontSize + LINE_SPACING + 15) + 5, null);
/*** 抗锯齿处理** @param url* @return*/private static Image getImage(String url, int width, int height) {if (Parameters.isEmpty(url)) return null; BufferedImage read = null; try {url = url.replaceFirst("https", "http"); read = ImageIO.read(new URL(url)); return read.getScaledInstance(width, height, BufferedImage.SCALE_SMOOTH); } catch (IOException e) {e.printStackTrace(); }return null; }
效果如下:
文章图片
就是解决方法,可能还有更好的方法,需要继续摸索,请多指教。
AWT,SWT缩小图片消除锯齿的平滑处理 在Java中缩小图片很容易就得到一张很糟糕的图片,上面满是锯齿和不清晰的线条,在Java EE中,我们通常使用Jmagick,Jmagick使用的是类C语言程序提供给Java的API接口,在网站中运行,效率较高,但是体积较大,程序复杂度也较高(相关下载安装方式在各大网站上均有详细叙述,不再此重复)。如果不是特殊需要,不推荐在PC应用程序中使用。
在PC应用程序中,缩小一副图片有好多方法
缩小一副图片最常见的方法
- awt中Image.getScaledInstance方法
- swt中ImageData.ScaledTo方法
- PaintEvent.gc.drawImage方法
swt中如果使用ScaledTo方法只能得到一副惨不忍睹的图片
所以swt缩小图片而不产生锯齿的方法只有在PaintEvent.gc.drawImage方法上做文章
说了这么多,其实方法很简单.....就是在drawImage之前,设置e.gc.setAdvanced(true); e.gc.setAntialias(SWT.ON);
: D
【java|java awt生成签名图片如何消除锯齿化】以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
推荐阅读
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- 事件代理
- Java|Java OpenCV图像处理之SIFT角点检测详解
- java中如何实现重建二叉树
- 数组常用方法一
- 【Hadoop踩雷】Mac下安装Hadoop3以及Java版本问题
- Java|Java基础——数组
- RxJava|RxJava 在Android项目中的使用(一)
- 记录iOS生成分享图片的一些问题,根据UIView生成固定尺寸的分享图片
- java之static、static|java之static、static final、final的区别与应用