项目场景:
在一个线上互联网医院中,需要生成电子处方图片,图片里面会有医生的手写签名。通过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;
}
效果如下:
就是解决方法,可能还有更好的方法,需要继续摸索,请多指教。