硬章图片的透明化【抠图】java/android实现

论文工具——写论文好用的绘图工具(甘特图+流程图+网络模型图+泳道图) * 在写HiFi-GAN论文的代码阅读过程中,我发现仅仅通过文字来描述网络结构,不够详细,所以想绘制出网络结构图,更加具象化的描述出网络结构。想去花了,才发现之前都是通过在线绘图网站画的,费时费力,所以想找一些专门的网站化出比较规范并且高质量的图。一方面是为了方便讲解,提高论文的质量,另外一方面也是为了以后写论文打下良好的基础。 * 这篇文章会根据我以前的画图经验展开,以前是使用绘图软件,手动绘图。后来,看到了其他的方法,但是需要写一些代码,或者需要安装特定的软件,投入成本太大,就没有学。所以,本文分享的工 阅读详情

背景

在实现图片硬章插入文档的时候,遇到了如下的问题。 给出的硬章的背景是白色的,并不是想要的透明色。这样有什么影响呢?这里贴一个图片可以进行观察。
在这里插入图片描述
你觉得对于硬章来说是透明色更接近现实情况呢,还是直接贴图好呢?

思路介绍

对于硬章图片,需要把他的白色背景,或者说是浅色背景扣调,也就是在白色或者接近白色的地方(255 255 255)给他的alpha 通道设置成0,对于有信息的地方(深色)alpha设置255,这样就是实现了硬章抠图。

避坑

如果是用opencv 实现的话也没有什么好写的,这里主要使用java 实现了抠图的过程,并在android中重写了该方法。
在java中是无法给colorModel 是RGB图片进行设置透明通道的,这里需要把图片变成ARGB的,这里可以通过Graphics2D进行转化

基本流程

  • 读取图片
  • 判断颜色模式,并统一到ARGB
  • 遍历像素
  • 浅色点设置透明通道为0

代码讲解

java实现

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

/**
 * @name SignImage
 * @date 2020/6/3 20:28
 */
public class SignImage {
    public static void main(String[] args) throws IOException {

        String filePath = "D://sign.jpg";
		//读取图片
        BufferedImage imageTmp = ImageIO.read(new File(filePath));
        int alphaLocal = imageTmp.getColorModel().getAlpha(0);
        //统一图片到argb
        if(imageTmp.getColorModel().getNumComponents() == 3){
            BufferedImage teemp = new BufferedImage(imageTmp.getWidth(),imageTmp.getHeight(),6);
            //6 是argb的意思
            //借助graphics 转argb
            Graphics2D graphics2D = DrawPictureUitl.getGraphics(teemp,
                    imageTmp.getWidth(),imageTmp.getHeight(),1);
            graphics2D.drawImage(imageTmp,0,0,null);
            imageTmp = teemp;
            graphics2D.dispose();
        }

        if ( alphaLocal == 255){
            int alpha = 0;
            //遍历像素。可以并行
            for (int j1 = imageTmp.getMinY(); j1 < imageTmp
                    .getHeight(); j1++) {
                for (int j2 = imageTmp.getMinX(); j2 < imageTmp
                        .getWidth(); j2++) {
                    int rgb = imageTmp.getRGB(j2, j1);
                    if (colorInRange(rgb)){
                        alpha = 0;
                    }
                    else{
                        alpha = 250;
                    }
                    rgb = (alpha << 24) | (rgb & 0x00ffffff);
                    imageTmp.setRGB(j2, j1, rgb);
                }
            }
        }
        //保存图片
        ImageIO.write(imageTmp, "png", new File("d://test.png"));
    }
    //检测颜色是否需要加透明通道
    public static boolean colorInRange(int color) {
        int red = (color & 0xff0000) >> 16;
        int green = (color & 0x00ff00) >> 8;
        int blue = (color & 0x0000ff);
        if (red >= 230 && green >= 230 && blue >= 230)
        {return true;}
        return false;
    }

}

对于android 来说,处理的是bitmap ,原理是一样的

//把白色转换成透明
    public static Bitmap getImageToChange(Bitmap mBitmap) {
        Bitmap createBitmap = Bitmap.createBitmap(mBitmap.getWidth(), mBitmap.getHeight(), Bitmap.Config.ARGB_8888);
        if (mBitmap != null) {
            int mWidth = mBitmap.getWidth();
            int mHeight = mBitmap.getHeight();
            for (int i = 0; i < mHeight; i++) {
                for (int j = 0; j < mWidth; j++) {
                    int color = mBitmap.getPixel(j, i);
                    int g = Color.green(color);
                    int r = Color.red(color);
                    int b = Color.blue(color);
                    int a = Color.alpha(color);
                    if(g>=250&&r>=250&&b>=250){
                        a = 0;
                    }
                    color = Color.argb(a, r, g, b);
                    createBitmap.setPixel(j, i, color);
                }
            }
        }
        return createBitmap;
    }
手把手教你修改miniwiggler配置信息,解决UDE连接问题(附FT_PROG工具下载) 本文详细介绍了如何使用FT_PROG工具修改miniwiggler配置信息,解决UDE连接问题。通过分析FT2232芯片的EEPROM结构,提供从驱动安装到配置烧写的完整流程,帮助开发者实现无缝连接英飞凌TriBoard开发板。文章还包含常见错误解决方案和高级批量配置技巧。 阅读详情

相关推荐

DeepSeek研发的精算大模型「精卫」已实现98%精算任务覆盖,中国人寿采用后年节约3.2亿元技术采购成本,形成关键技术替代效应

根据现有资料,精算领域关键技术替代效应的行业标准定义尚未明确具体提及。然而,可以从相关文献中提取一些关键概念和方法来推导出可能的定义。​替代效应的基本定义​:替代效应是指一种商品价格变动引起另一种商品的相对价格变动,从而导致消费者在维持原有效用水平不变的条件下对商品需求量做出的调整。​技术替代效应​:在精算领域,技术替代效应可以理解为新技术或新方法对现有技术或方法的替代,从而影响精算模型、数据处理和决策过程。例如,机器学习在精算中的应用日益增长,改变了精算师的工作方式和模型构建方法。​。

百态·数智思维 | 聚焦大数据、量化与未来AI 1712

Java 对印章进行抠图

Java 对印章进行抠图

adminstate的博客 1355

YOLO11实战 第001期-基于yolo11的CrowdHuman密集行人目标检测实战文档(yolo格式数据免费获取)

1.数据阶段在拥挤/遮挡场景下,使用crowdhuman数据集重训练后的yolo11,效果表现较好。crowdhuman数据集标签如下,有Head BBox、Visible BBox、Full BBox。如下图显示:数据集介绍CrowdHuman数据集是旷世发布的用于行人检测的数据集,图片数据大多来自于google搜索。CrowdHuman数据集数据量比较大,15000张,5000张,验证集4370张。训练集和验证集中共有470K个实例,约每张图片包含23个人,同时存在各种各样的遮挡。

深度学习算法工程师,专注于前沿算法研究与实战应用。在这里,我将分享深度学习领域的实战经验、优质数据集资源以及最新论文解读与精度分析,旨在与广大技术爱好者共同探索人工智能的奥秘,助力技术成长与创新。 2163

java 图片签章(颜色像素)提取并优化

修订记录 责任人 修订时间 说明 周志豪 2020年6月18日 初稿 图片签章提取 代码片段 1. 获取图片 // ImageIO读取要处理的图片到内存 BufferedImage sourceBufferIamge = ImageIO.read(imageFile); 2. 获取签章的边缘点位和签章长宽 // 获取图片的长宽 int width = sourceBufferIamge.getWidth(); int height = sourceBufferIamge.getHei

g995158600的博客 1429

海外最新AI营销AI销售书籍推荐AI营销培训讲师AI销售培训讲师人工智能营销培训师人工智能销售培训师AI赋能营销培训AI赋能销售培训企业AI营销内训企业AI销售内训AI营销课程讲师AI销售课程讲师

专栏|AI营销与AI销售实战 · 第46期在这个人类与算法共舞的时代,销售,已经不是你我熟悉的那个“打电话、见客户、做PPT”的老行当了。你还以为销售是“打感情牌”?错了,情感要继续,但方式已经升级。你还以为AI只是“写写文案”?错了,文案只是皮毛,真正的杀器,是思维方式的重构,是认知地图的重绘。首先,我们需要明确一个事实:AI并不会消灭销售这个职业,但它必然会重新定义销售的本质。在销售领域,真正的制胜之道不是简单地采用AI工具,而是的能力。

Akibfrycc的博客 1101

OSMDroid 切换地图不更新的问题

用OSMDroid加载Google地图的时候 需要有按钮切换不同图层的地图,如果发现调用了mMapView.setTileSource(ITileSource aTileSource)方法的时候发现地图View没有更新的话,可能是因为两个实例化TileSource对象其子类BitmapTileSourceBase这个类的aName成员变量值一样导致的地图在setTileSource出现不更新问题,...

godoge的博客 1039

使用BufferedImage类从图片中把印章抠出来并设置透明背景

使用BufferedImage类从图片中把印章抠出来并设置透明背景。

CuiGongZi的博客 1514

新手避坑:RT-Thread-Studio外设驱动配置最容易忽略的3个地方(附WDT实例)

本文针对RT-Thread-Studio新手在配置外设驱动时常见的编译报错问题,以看门狗(WDT)为例,详细解析了最易忽略的三个关键配置环节:RT-Thread-Studio的图形化Setting开关、Kconfig中的依赖关系以及SConscript的编译规则。掌握这三层配置模型,能有效避免头文件包含正确却依然编译失败的问题,确保驱动代码被正确加入构建。

gray5的博客 506

Android的图像处理类Bitmap

Bitmap是Android系统中的图像处理的最重要类之一。用它可以获取图像文件信息,进行图像剪切、旋转、缩放等操作,并可以指定格式保存图像文件。本文从应用的角度,着重介绍怎么用Bitmap来实现这些功能。 一、Bitmap的生成 1.1 BitmapFactory decode出Bitmap     Bitmap实现在android.graphics包中。但是Bitmap类的构造函数是私有

linghu_java的专栏 3424

C#串口通信上位机开发实战:轻松实现硬件控制与数据交互

摘要:本文介绍如何使用C#开发串口通信上位机应用,实现与硬件设备(如传感器、PLC等)的数据交互。文章涵盖串口通信原理、开发环境配置、功能实现(串口连接管理、数据收发、实时显示)及UI设计,重点讲解SerialPort类的应用、多线程数据接收处理和错误优化。通过Windows Forms构建直观界面,帮助开发者快速掌握工业控制和自动化系统中的串口通信技术,为物联网和智能设备开发提供实用解决方案。全文约150字。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 3029

高云FPGA系列教程(1):FPGA和ARM开发环境搭建

至此,高云FPGA和MCU开发环境就搭建完成了,整体还是比较简单的,几乎是一键完成,下一篇文章我们进行实际的FPGA和MCU开发。本文是高云FPGA系列教程的第1篇文章。

whik1194的博客 6187

Android之 Bitmap使用

Bitmap使用

qq_29848853的博客 5606

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

java抠图_硬章图片的透明化【抠图】java/android实现

背景在实现图片硬章插入文档的时候,遇到了如下的问题。 给出的硬章的背景是白色的,并不是想要的透明色。这样有什么影响呢?这里贴一个图片可以进行观察。在这里插入图片描述你觉得对于硬章来说是透明色更接近现实情况呢,还是直接贴图好呢?思路介绍对于硬章图片,需要把他的白色背景,或者说是浅色背景扣调,也就是在白色或者接近白色的地方(255 255 255)给他的alpha 通道设置成0,对于有信息的地方(深色...

weixin_35498756的博客 741

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

可以提升工作效率的一些网站、应用、插件和小技巧(一)

前言 正如标题所说,本文将分享一些我使用过的一些好用的工具、网站和其它一些能提升工作效率的东西,希望能够对你有所帮助,本文有机会也会持续更新中,此外由于本文主要关注点是效率,所以很多用于美观的工具并没有提及。 网站 鸠摩搜索 一个特别好用的搜索电子书资源的网站,一些经典的、常见的书籍都可以搜到,非常适合程序员,不过我个人还是喜欢纸质书籍,不过适合在上班划水学习时看,遇到好的书籍,还是要买正版支持一下作者呀。网址是https://www.jiumodiary.com,除此之外,还有一个名为ZLibrary

庄周de蝴蝶的博客 880

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

java 抠取红色印章(透明背景)

java 抠出红色印章图

weixin_38008837的博客 1725

Android | Bitmap基础知识点整理

Bitmap是一种图像表示,用于存储图像数据的像素矩阵。它使用一个矩阵保存图像的像素信息。每个像素都有颜色信息,通常以 RGB(红色、绿色、蓝色)三通道表示。ARGB_8888:表示每个像素包含 32 位(8 位 Alpha,8 位 Red,8 位 Green,8 位 Blue),是最常用的配置,图像质量高。RGB_565:每个像素包含 16 位(5 位 Red,6 位 Green,5 位 Blue),图像质量稍低,但占用的内存较少。ALPHA_8:每个像素只包含 8 位透明度,常用于遮罩。

小马快跑的博客 1419

java 盖章透明_java实现图片上传后裁剪,把白色背景变成透明图(电子印章)

应用场景:企业在白纸上盖上印章,然后软件实现透明的电子印章,在后续业务流程中使用!A4纸-----------------------------------------处理后-------------------------------------->电子印章-------->实现共分为3步1. 图片上传后预览上传图片//POST file upload//commons-file...

weixin_34201593的博客 1212

免费的绘图和图表工具Tldraw

tldraw 是一个小小的绘图应用程序。

wbsu2004的博客 6352

31.2k star, 免费开源的白板绘图工具 tldraw

tldraw 的设计目标是提供一个易于使用的绘图工具,支持团队协作,同时具有跨平台和实时协作的功能。tldraw 是一款开源免费的无限画布白板,可以在线的实时协作,用户能够创建简单的图形和图示。tldraw 可以在 VS Code 通过安装插件来离线使用,文件后缀名为 .tldr。

其实计算机并没有漏洞,漏洞在于人的身上 3334

开源协作式数字白板工具Tldraw

Tldraw 是一个轻量级、功能丰富的 Web 绘图工具,为用户提供了创建并共享流程图、线框图、原型、图表和其他可视化内容的平台。完全免费:无需注册账号或下载安装任何软件即可使用开源可自托管:代码在 GitHub 开源,支持开发者自行部署协作功能:支持多人实时同步编辑同一画布简洁易用:界面直观,操作简单,被誉为"人人都会用的白板工具"提供多种填充效果(无、一半、实心、图案)可调整画笔颜色、线框样式等属性支持暗黑模式,适应不同光线环境。

xuweilin的博客 1625

超好用的AI画图工具,tldraw推荐

tldraw是一个开源的JavaScript库,基于React框架开发,专为创建无限画布体验而设计。它不仅适用于个人用户,也非常适合团队协作。tldraw的核心功能是提供一个数字白板,用户可以在其中自由地绘制图形、编辑文本,甚至进行复杂的设计工作。tldraw作为一款AI画图工具,以其无限画布、智能对齐、实时协作等特点,为用户提供了一个强大而灵活的创作平台。无论是个人用户还是团队,都可以在tldraw的帮助下,更高效地完成设计和创作工作。

智慧危机的博客 1173

探索TLDRAW:创新的在线绘图工具

探索TLDRAW:创新的在线绘图工具 是一个基于Web的实时协作绘图平台,它以其直观易用、功能强大的特性吸引了众多创作者和团队。这篇文章将深入探讨其技术特性、应用场景及独特之处,以期让更多用户了解并开始使用这个项目。 项目简介 TLDRAW的核心理念是为用户提供一个简洁而高效的创作环境,无论你是设计师、工程师还是想要快速制作图表的普通用户,都能轻松上手。该项目使用React进行前端开发,后端支持由...

gitblog_00036的博客 740

tldraw —— 免费开源的白板绘图工具

tldraw 的设计目标是提供一个易于使用的绘图工具,支持团队协作,同时具有跨平台和实时协作的功能。tldraw 是一款开源免费的无限画布白板,可以在线的实时协作,用户能够创建简单的图形和图示。tldraw 可以在 VS Code 通过安装插件来离线使用,文件后缀名为 .tldr。

leyang0910的博客 1817

tldraw:一款免费开源、支持协作的数字白板工具

tldraw 是一款轻量级的绘图工具,具有简洁易用、实时协作和开源可定制等优势。

Tony.Dong的专栏 864

tldraw白板组件

很强大,有兴趣的同学可以深入研究,同时支持多人协同。

hawk2014bj的博客 597

tldraw:Star37.8k,强烈推荐,强悍的白板工具,无限画布,助力开发者打造多人协作白板,真心不错~~

tldraw是一款由Google DeepMind参与开发的无限画布SDK,旨在帮助开发者快速构建具有协作功能的白板。通过使用tldraw SDK,你可以将协作白板轻松集成到自己的产品中,或者利用其组件、API和服务创建全新的画布体验。

1360
上一篇: 软件工程化的一些思考
下一篇: 一个转义字符引起的。。
鱼香土豆丝
博客等级 码龄11年 126粉丝 137原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值