首页 > 编程语言 >通过印模生成电子印章-Java源代码

通过印模生成电子印章-Java源代码

时间:2024-01-09 16:35:19浏览次数:40  
标签:Java int image bufferedImage 印章 印模 import 源代码 图片

以下代码是处理印模图片的核心代码,通过以下代码可以将公章图片转换为电子印章图片。

制作方式分为四步:

1、在白纸上加盖印章;

2、把加盖印章的白纸扫描,形成图片;

3、将图片通过下面的代码进行自动透明化抠图处理

4、程序返回自动透明化抠图处理后的电子印章图片

5、处理后的电子印章效果(为防止企业公章安全,下图经过马赛克处理),如下图;

通过印模生成电子印章-Java源代码_抠图


import org.springframework.stereotype.Service;

import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;

/**
 * @Description: 企业签章业务,将印模图片进行自动透明化抠图,形成电子印章图片
 * @ClassName: EntSealClipService
 * @copyright 北京资源律动科技有限公司 www.kaifangqian.com
 */
@Service
public class EntSealClipService {

    public byte[] clip(byte[] originByte, Integer colorRange){
        ByteArrayInputStream inputStream = new ByteArrayInputStream(originByte);
        BufferedImage image = null;
        try {
            image = ImageIO.read(inputStream);
        } catch (Exception e) {
            e.printStackTrace();
        }
        // 高度和宽度
        int height = image.getHeight();
        int width = image.getWidth();

        // 生产背景透明和内容透明的图片
        ImageIcon imageIcon = new ImageIcon(image);
        BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_4BYTE_ABGR);
        Graphics2D g2D = (Graphics2D) bufferedImage.getGraphics(); // 获取画笔
        g2D.drawImage(imageIcon.getImage(), 0, 0, null); // 绘制Image的图片,使用了imageIcon.getImage(),目的就是得到image,直接使用image就可以的

        int alpha = 0; // 图片透明度
        // 外层遍历是Y轴的像素
        for (int y = bufferedImage.getMinY(); y < bufferedImage.getHeight(); y++) {
            // 内层遍历是X轴的像素
            for (int x = bufferedImage.getMinX(); x < bufferedImage.getWidth(); x++) {
                int rgb = bufferedImage.getRGB(x, y);
                // 对当前颜色判断是否在指定区间内
                if (colorInRange(rgb,colorRange)){
                    // #AARRGGBB 最前两位为透明度
                    rgb = (alpha << 24) | (rgb & 0x00ffffff);
                    bufferedImage.setRGB(x, y, rgb);
                    alpha = 0;
                }else{
                    // 设置为不透明
                    alpha = 255;
                    // #AARRGGBB 最前两位为透明度
                    rgb = (alpha << 24) | (0xff0000);
                    bufferedImage.setRGB(x, y, rgb);
                }

            }
        }
        // 绘制设置了RGB的新图片,这一步感觉不用也可以只是透明地方的深浅有变化而已,就像蒙了两层的感觉
        g2D.drawImage(bufferedImage, 0, 0, null);

        // 生成图片为PNG
        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
        try {
            ImageIO.write(bufferedImage, "png", outputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return outputStream.toByteArray();
    }

    // 判断是背景还是内容
    public boolean colorInRange(int color , Integer colorRange) {
        int red = (color & 0xff0000) >> 16;// 获取color(RGB)中R位
        int green = (color & 0x00ff00) >> 8;// 获取color(RGB)中G位
        int blue = (color & 0x0000ff);// 获取color(RGB)中B位
        // 通过RGB三分量来判断当前颜色是否在指定的颜色区间内
        if (red >= colorRange && green >= colorRange && blue >= colorRange){
            return true;
        }
        return false;
    }
}

通过印模生成电子印章-Java源代码_抠图_02开放签电子签章产品致力于将电子签章产品、技术开源、开放,让电子签署更加简单。我们更加相信秉承开放共享这一价值观,能够为产品与用户之间带来更多信任。

开源工具版下载地址:https://gitee.com/kaifangqian

标签:Java,int,image,bufferedImage,印章,印模,import,源代码,图片
From: https://blog.51cto.com/u_16230987/9162829

相关文章

  • java生成企业公章图片源代码
    企业公章图片在电子签章业务中应用广泛,在电子签章应用过程中首先需要生成公章图片,然后再使用公章图片结合数字签名技术完成电子签,这样就实现了从可视化到不可篡改的数字化电子签章功能,以下是企业公章图片生成源代码。importcom.resrun.utils.Base64;importorg.apache.pdfbox.io.......
  • java的idea使用maven下载依赖速度过慢解决
    idea页面双击shift键,搜索settings.xml然后将以下代码复制到xml中间的settings中间切换为阿里源<mirrors><!--mirror|Specifiesarepositorymirrorsitetouseinsteadofagivenrepository.Therepositorythat|thismirrorserveshasanIDthatmatc......
  • java8日期时间格式化DateTimeFormatter多个格式
    原文地址:datetimeformatter.ofpatternmultipleformats-掘金DateTimeFormatter 是一个用于日期时间格式化和解析的类。使用 ofPattern 方法可以创建一个格式化器,该方法接受一个日期时间格式的字符串作为参数。如果您需要在同一个 DateTimeFormatter 对象中支持多种不同的......
  • Java多线程编程中的异常处理策略
    第1章:引言大家好,我是小黑,咱们今天聊聊异常处理。想必大家在写代码的时候都遇到过各种各样的异常吧?有时候,一个小小的异常如果处理不当,就可能导致整个程序崩溃。特别是在多线程环境下,异常处理就像是在拆雷,稍不留神,程序就可能“炸”了。为啥多线程编程中的异常处理这么重要呢?咱们......
  • JavaScript apply、call、bind 函数详解
    apply和callapply和call非常类似,都是用于改变函数中this的指向,只是传入的参数不同,等于间接调用一个函数,也等于将这个函数绑定到一个指定的对象上:letname='window'functiongetName(param1,param2){console.log(this.name)console.log(param1,param2)}letobj=......
  • Java学习建议
    很多大学生、在职员工、IT爱好者都会选择学习Java来提升自己的专业技能,那么在学习之前做好充分的准备也是必须的。建议大家不妨仔细研究下如何快速系统入门,这样才利于更好的掌握Java技术。以下是对于Java学习的一些建议,供参考。 1.了解Java,明确自己的学习目标 Java是一门面向对......
  • 基于Java的在线教育平台设计与实现
    一、 选题依据及意义随着电子技术和网络信息的迅速发展,互联网正在政治、经济、文化各个领域引发着一场影响广泛而深远的革命。利用互联网展开的网上教育,已经越来越成为衡量一个地方教育综合发展的重要指标之一。21世纪是一个网络平台的信息时代,随着网络应用的普及和深入,目前网络......
  • 新车怎么选?用Java采集汽车之家车辆配置参数信息
    年关将至,辛苦一年了,总得犒劳犒劳自己,有人喜欢出去大吃一顿,逛街买东西,也有人会选择买车给自己增添一个代步工具买一辆汽车,而且现在车辆活动力度很大,将会吸引更多人购买欲。那么,普通人怎么选择车辆呢?下面我将通过java爬虫写一个车辆配置参数信息抓取程序,并进行分析对比,让选择也能手......
  • Java 基础 - 注解机制详解
    注解是JDK1.5版本开始引入的一个特性,用于对代码进行说明,可以对包、类、接口、字段、方法参数、局部变量等进行注解。它是框架学习和设计者必须掌握的基础。注解基础注解是JDK1.5版本开始引入的一个特性,用于对代码进行说明,可以对包、类、接口、字段、方法参数、局部变量等进行注解。......
  • Java+springboot开发医院智能导诊小程序源码
    智慧医院如何实现智能导诊服务?1、数据收集和整合:医院需要收集和整合患者的医疗数据,包括病历、化验结果、影像资料等。同时,还可以整合相关的医学数据库和知识库,以便为导诊提供支持。2、患者信息采集:在患者来院时,可以通过智能问诊系统收集患者的基本信息、症状描述、病史等。这可以......