700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > java 为透明图片添加背景颜色

java 为透明图片添加背景颜色

时间:2020-01-12 05:51:50

相关推荐

java 为透明图片添加背景颜色

java 为透明图片添加背景颜色

需求介绍解决方式

需求介绍

项目需要实现在线无纸化合同签署,调用触屏手写签名生成电子合同,在生成合同过程中需要调用OCR 技术对签署文字进行识别,在此过程中,生成的电子签图片背景必须是透明的(为了附着在合同上),但是OCR技术对透明图片上文字无法识别,因此在调用OCR前需要对图片进行处理,增加背景颜色,提高识别率。

解决方式

查阅资料发现许多同学使用 java Graphics2D 直接修改透明图片,但是直接修改的结果是添加了背景颜色,但是不是我们需要的背景颜色,参考地址:本文的解决方式是预先生成一个白色底片,将透明图片附在生成的白色图片上,达到添加背景的目的,具体代码如下:

/*** 前端传递的参数为base64编码的字符串* @param picStr* @return*/public void str2Image(String picStr) {byte[] decode = Base64Utils.decode(picStr);InputStream in = new ByteArrayInputStream(decode);BufferedImage srcImage;try {srcImage = ImageIO.read(in);changeImageBackground(srcImage);} catch (IOException e) {log.error("ocr 将str转化io异常:", e);throw new ServiceException("图片添加背景色异常");}}public void changeImageBackground(BufferedImage srcImage) {BufferedImage outImage = null;try {int oldHeight = srcImage.getHeight();int oldWidth = srcImage.getWidth();int destWidth = oldWidth * 2;int destHeight = oldHeight * 2;outImage = new BufferedImage(destWidth, destHeight, BufferedImage.TYPE_INT_RGB);Graphics2D graphics2D = (Graphics2D) outImage.getGraphics();// 设置背景颜色graphics2D.setBackground(Color.WHITE);graphics2D.clearRect(0, 0, destWidth, destHeight);// 设置图片居中显示graphics2D.drawImage(srcImage, (destWidth - oldWidth) / 2, (destHeight - oldHeight) / 2, null);graphics2D.dispose();ByteArrayOutputStream os = new ByteArrayOutputStream();ImageIO.write(outImage, ConstantUtil.FileType.PNG, os);byte[] bytes = os.toByteArray();String string = Base64Utils.encodeToString(bytes);// log.info(string);// 调用ocr服务// sendOcr(string);} catch (IOException e) {log.error("对ocr图片操作异常", e);throw new ServiceException("对ocr图片操作异常");}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。