java awt生成签名图片如何消除锯齿化

网友投稿 404 2022-09-15


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 YGHnhTe/ 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.getScaledIYGHnhTenstance方法

swt中ImageData.ScaledTo方法

PaintEvent.gc.drawImage方法

awt中,设置getScaledInstance方法的第三个参数为BufferedImage.SCALE_SMOOTH即可

swt中如果使用ScaledTo方法只能得到一副惨不忍睹的图片

所以swt缩小图片而不产生锯齿的方法只有在PaintEvent.gc.drawImage方法上做文章

说了这么多,其实方法很简单.....就是在drawImage之前,设置e.gc.setAdvanced(true);e.gc.setAntialias(SWT.ON);

: D


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:某公司招聘网络管理员时会问的一些问题(网络管理员笔试题)
下一篇:2006年度工作总结(2016年度工作总结)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~