添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

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

  1. 查阅资料发现许多同学使用 java Graphics2D 直接修改透明图片,但是直接修改的结果是添加了背景颜色,但是不是我们需要的背景颜色, 参考地址:
  2. 本文的解决方式是预先生成一个白色底片,将透明图片附在生成的白色图片上,达到添加背景的目的,具体代码如下:
* 前端传递的参数为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图片操作异常" ) ; 之前在百度AI社区写的人像分割帖子,最近有一些开发者会遇到返回的 透明 图的base64存 图片 有问题,还想知道存起来的 透明 图片 如何更改 背景 色,想快速做个证件照的应用。 此文呢。就从接口返回的 透明 图片 搞起。把返回的 foreground - 人像前...
项目中遇到一个需要把 背景 图改为 透明 的需求,因为我这里 图片 可能会比较复杂所以会出现有些 背景 留着 图片 没了的问题。所以根据网络上的资源学习了一下我项目可以用的。 package file; import java x.imageio.ImageIO; import java x.swing.*; import java .awt.*; import java .awt.image.BufferedImage; import java .io.*; * 描述 The type Tm img. * @au
作为一个完全的小白,折腾了一个星期多,才完成一张 图片 的处理,包括 添加 logo,二维码,以及 图片 的部分细节处理 期间也参考了部分资料:https://www.cnblogs.com/xiaoduilantian/p/9206170.html https://blog.csdn.net/jzshmyt/article/details/8364408 https://blog.csdn.ne...
package test; import java .awt.AlphaComposite;import java .awt.Color;import java .awt.Font;import java .awt.Graphics2D;import java .awt.image.BufferedImage;import java .io.File; import java x.imageio.Image...
package test; import java .awt.AlphaComposite;import java .awt.Color;import java .awt.Font;import java .awt.Graphics2D;import java .awt.image.BufferedImage;import java .io.File; import java x.imageio.Image...
public static void pressText2(String sourceImg,String targetImg) { try { File file = new File(sourceImg); File targetfile = new File(t...
package com.goldgrid.socket.client; import java .awt.Graphics2D;import java .awt.Image;import java .awt.image.BufferedImage;import java .io.ByteArrayOutputStream;import java .io.File; import java x.imagei...