返回顶部
首页 > 资讯 > 精选 >Java怎么实现抠图片文字或签名
  • 500
分享到

Java怎么实现抠图片文字或签名

2023-07-02 12:07:44 500人浏览 薄情痞子
摘要

本篇内容介绍了“Java怎么实现抠图片文字或签名”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!java抠图片文字或签名运行原理第一步 遍历像

本篇内容介绍了“Java怎么实现抠图片文字或签名”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

java抠图片文字或签名

运行原理

第一步 遍历像素点

BufferedImage image = Imageio.read(new File(input));// 图片透明度int alpha = 0;// 最小int maxX = 0, maxY = 0;// 最大int minX = image.getWidth(), minY = image.getHeight();for (int y = image.getMinY(); y < image.getHeight(); y++) {// 内层遍历是X轴的像素for (int x = image.getMinX(); x < image.getWidth(); x++) {int rgb = image.getRGB(x, y);// 对当前颜色判断是否在指定区间内if (!colorInRange(rgb)) {minX = minX > x ? x : minX;minY = minY > y ? y : minY;maxX = maxX < x ? x : maxX;maxY = maxY < y ? y : maxY;}}}

第二步 判断像素是否是黑色或者指定颜色

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

第三步 统计 选取图像的像素点最小坐标或最大坐标

minX = minX > x ? x : minX;minY = minY > y ? y : minY;maxX = maxX < x ? x : maxX;maxY = maxY < y ? y : maxY;

第四步 新建画布(长度和高度=最大像素点-最小像素点)

BufferedImage bufferedImage = new BufferedImage(maxX - minX, maxY - minY, BufferedImage.TYPE_4BYTE_ABGR);

第五步 画图

for (int x = bufferedImage.getMinX(); x < bufferedImage.getWidth(); x++) {// 内层遍历是X轴的像素for (int y = bufferedImage.getMinX(); y < bufferedImage.getHeight(); y++) {int rgb = image.getRGB(x + minX, y + minY);if (!colorInRange(rgb)) {// 设置为不透明alpha = 255;// #AARRGGBB 最前两位为透明度rgb = (alpha << 24) | (0x000000);//黑色构图bufferedImage.setRGB(x, y, rgb);}}}// 生成图片为PNGImageIO.write(bufferedImage, "png", new File(output));// 输出图片坐标System.out.println(minX + " " + minY + " " + maxX + " " + maxY);

完整代码

import javax.imageio.ImageIO;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;public class Main {    //识别颜色度数    public static int color_range = 100;    public static void recognize(String input, String output) throws IOException {        BufferedImage image = ImageIO.read(new File(input));        // 图片透明度        int alpha = 0;        // 最小        int maxX = 0, maxY = 0;        // 最大        int minX = image.getWidth(), minY = image.getHeight();        for (int y = image.getMinY(); y < image.getHeight(); y++) {            // 内层遍历是X轴的像素            for (int x = image.getMinX(); x < image.getWidth(); x++) {                int rgb = image.getRGB(x, y);                // 对当前颜色判断是否在指定区间内                if (!colorInRange(rgb)) {                    minX = minX > x ? x : minX;                    minY = minY > y ? y : minY;                    maxX = maxX < x ? x : maxX;                    maxY = maxY < y ? y : maxY;                }            }        }        BufferedImage bufferedImage = new BufferedImage(maxX - minX, maxY - minY, BufferedImage.TYPE_4BYTE_ABGR);        for (int x = bufferedImage.getMinX(); x < bufferedImage.getWidth(); x++) {            // 内层遍历是X轴的像素            for (int y = bufferedImage.getMinX(); y < bufferedImage.getHeight(); y++) {                int rgb = image.getRGB(x + minX, y + minY);                if (!colorInRange(rgb)) {                    // 设置为不透明                    alpha = 255;                    // #AARRGGBB 最前两位为透明度                    rgb = (alpha << 24) | (0x000000);//黑色构图                    bufferedImage.setRGB(x, y, rgb);                }            }        }        // 生成图片为PNG        ImageIO.write(bufferedImage, "png", new File(output));        // 输出图片坐标        System.out.println(minX + " " + minY + " " + maxX + " " + maxY);    }    // 判断是背景还是内容    public static boolean colorInRange(int color) {        // 获取color(RGB)中R位        int red = (color & 0xff0000) >> 16;        // 获取color(RGB)中G位        int green = (color & 0x00ff00) >> 8;        // 获取color(RGB)中B位        int blue = (color & 0x0000ff);        // 通过RGB三分量来判断当前颜色是否在指定的颜色区间内        if (red >= color_range && green >= color_range && blue >= color_range) {            return true;        }        return false;    }    public static void main(String[] args) throws IOException {        recognize("E:/tmp/demo1.jpg","E:/tmp/demo1_1.jpg");    }}

“Java怎么实现抠图片文字或签名”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: Java怎么实现抠图片文字或签名

本文链接: https://lsjlt.com/news/341779.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Java怎么实现抠图片文字或签名
    本篇内容介绍了“Java怎么实现抠图片文字或签名”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!java抠图片文字或签名运行原理第一步 遍历像...
    99+
    2023-07-02
  • Java实现抠图片文字或签名的完整代码
    目录java抠图片文字或签名运行原理完整代码java抠图片文字或签名 运行原理 第一步 遍历像素点 BufferedImage image = ImageIO.read(new Fi...
    99+
    2024-04-02
  • Python实现给图片添加文字或图片水印
    目录前言PIL的Image模块的基本介绍Python代码实现文字水印Python代码实现图片水印前言 图片加水印有什么好处?在现今的数字化时代,网络上的图片泛滥,盗图现象也越来越严重...
    99+
    2023-05-19
    Python图片添加文字水印 Python图片添加图片水印 Python图片添加水印 Python添加水印
  • java图片文字提取功能怎么实现
    要实现Java的图片文字提取功能,可以使用OCR(Optical Character Recognition,光学字符识别)技术。O...
    99+
    2023-10-25
    java
  • Python实现给图片加文字或logo水印
    目录前言环境依赖代码验证一下执行结果前言 本文提供给图片添加文字或者logo图片水印的python工具,打造专属图片。 环境依赖 ffmpeg环境安装,ffmpy安装: pip ...
    99+
    2024-04-02
  • python怎么实现图片转文字
    本文小编为大家详细介绍“python怎么实现图片转文字”,内容详细,步骤清晰,细节处理妥当,希望这篇“python怎么实现图片转文字”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。python图片转文字用pytho...
    99+
    2023-07-05
  • java中怎么实现数字签名系统
    本篇文章为大家展示了java中怎么实现数字签名系统 ,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1。生成密钥对 生成密钥对可用Java提供的类KeyPairGenerator,用其中的getIns...
    99+
    2023-06-03
  • java怎么实现添加图片水印和文字水印
    这篇文章主要介绍java怎么实现添加图片水印和文字水印,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!我们经常会在一些图片或者图片上看到某某公司或品牌的水印,那么我们可不可以自己在喜欢的图片或文件上添加水印呢?答案当然...
    99+
    2023-06-09
  • vue怎么实现复制文字和图片
    本篇内容主要讲解“vue怎么实现复制文字和图片”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vue怎么实现复制文字和图片”吧!document.execCommand('copy'...
    99+
    2023-07-05
  • html怎么实现文字图片垂直居中
    今天小编给大家分享一下html怎么实现文字图片垂直居中的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了...
    99+
    2024-04-02
  • Android实现文字和图片混排(文字环绕图片)效果
    本文实例讲述了Android实现文字和图片混排(文字环绕图片)效果。分享给大家供大家参考,具体如下: 在平时我们做项目中,或许有要对一张图片或者某一个东西进行文字和图片说明,这...
    99+
    2022-06-06
    图片 Android
  • java怎么在图片上添加文字
    要在Java中给图片添加文字,可以使用Graphics2D类。下面是一个简单的示例代码,演示如何在图片上添加文字:```javaim...
    99+
    2023-08-20
    java
  • 怎么用Java实现添加、验证PDF数字签名
    这篇文章主要讲解了“怎么用Java实现添加、验证PDF数字签名”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用Java实现添加、验证PDF数字签名”吧!目录Jar文件获取及导入方法:在设...
    99+
    2023-06-20
  • ajax怎么实现异步文件或图片上传功能
    这篇文章主要介绍ajax怎么实现异步文件或图片上传功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!大家好,这篇文章我要给大家分享一个网页文件上传功能的代码,希望大家可以有所参考,或者给我提些建议。众所周知现在的各大...
    99+
    2023-06-08
  • Android实现图片文字识别
    导言 OCR,tess-two ,openCV等晕人的东西先分清,OCR,tess-two是图片文字识别,而openCV是图像识别比对,对于更复杂的图片文字识别需求可以采用百度云人工...
    99+
    2024-04-02
  • 接口签名怎么用Java实现
    java实现接口签名 为了保证数据传输的安全性,跟其他系统进行数据交互时,双方应该约定好密钥,把数据进行加密,接口签名,这样双方调用接口时,验证接口签名一致时就表明数据传输过程中没有...
    99+
    2024-04-02
  • DSA数字签名算法怎么实现
    本篇内容介绍了“DSA数字签名算法怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、DSA概述为了确保数据传输的安全性,不得不采取一...
    99+
    2023-06-04
  • PHP 对PDF文件实现数字签名
    PHP通过TCPDF库对生成的PDF文件进行数字签名。 效果如下: 这个是因为签名证书不在可信任证书列表中。 目录 准备数字证书 1.申请数字证书 2.自签名证书 安装TCPDF 证书签名 设置证书路径 设置证书信息 设置文档签名...
    99+
    2023-08-31
    pdf PHP 数字签名
  • HTML a标签中写有文字并有图片怎么隐藏文字
    本文小编为大家详细介绍“HTML a标签中写有文字并有图片怎么隐藏文字”,内容详细,步骤清晰,细节处理妥当,希望这篇“HTML a标签中写有文字并有图片怎么隐藏文字”文章能帮助大家解决疑惑,下面跟着小编的思...
    99+
    2024-04-02
  • Java实现画图 给图片底部添加文字标题
    目录Java画图 给图片底部添加文字标题Java 给图片添加文字水印Java画图 给图片底部添加文字标题 需求给图片底部添加文字编号 import java.awt.Color;...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作