java如何实现证件照换底色|背景换色

洛阳泰山 洛阳泰山     2023-02-18     805

关键词:

简介

本文主要讲解如何用java代码实现任何图片的底片换色,本文以为证件照片为例,用java代码生成多个底色不一样的图片。代码仅仅用到java包下的类,不需要借助外部包,用到的包有javax.imageiojava.awtjava.io 等。

教程

目标图片

实现思路

图片是由一个个像素块组成的,每个像素块对应一个RGB颜色值。将照片加载到内存,转换成一个二维的RGB矩阵,想办法识别到边缘的背景色,遍历二维矩阵,将跟背景色相同的颜色值替换为目标颜色值(如:蓝色背景 更换为 白色背景)。

代码实现


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

/**
 * @author  tarzan
 */
public class ImageBgChange 



    public static void main(String[] args) 
            //白色
            changeBgColor("E:\\\\screenshot\\\\certificate.png",Color.WHITE,45);
            //黑色
            changeBgColor("E:\\\\screenshot\\\\certificate.png",Color.BLACK,45);
            //绿色
            changeBgColor("E:\\\\screenshot\\\\certificate.png",Color.GREEN,45);
            //蓝色
            changeBgColor("E:\\\\screenshot\\\\certificate.png",Color.BLUE,45);
            //黄色
            changeBgColor("E:\\\\screenshot\\\\certificate.png",Color.YELLOW,45);
            //红色
            changeBgColor("E:\\\\screenshot\\\\certificate.png",Color.RED,45);
            //黑色透明
            changeBgColor("E:\\\\screenshot\\\\certificate.png",new Color(0,0,0,0),45);
            //白色透明
            changeBgColor("E:\\\\screenshot\\\\certificate.png",new Color(255,255,255,0),45);
    


    /**
     * 方法描述: 改变背景色
     *
     * @param path 图片路径
     * @param color 要变成的颜色
     * @param range 颜色误差范围(取50左右最佳)
     * @date 2023年01月13日 17:48:52
     */
    private static void changeBgColor(String path,Color color,int range) 
        try 
            BufferedImage image = ImageIO.read(new File(path));
            int RGB=image.getRGB(image.getMinX(), image.getMinY());
            // 遍历Y轴的像素
            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);
                    int r = (rgb & 0xff0000) >>16;
                    int g = (rgb & 0xff00) >> 8;
                    int b = (rgb & 0xff);
                    int R = (RGB & 0xff0000) >>16;
                    int G = (RGB & 0xff00) >> 8;
                    int B = (RGB & 0xff);
                //颜色误差范围
               if(Math.abs(R-r) < range && Math.abs(G-g) < range && Math.abs(B-b) < range ) 
                        image.setRGB(x,y,color.getRGB());
                    
                
            
            String suffix=path.substring(path.lastIndexOf("."));
            String filePath =path.replace(suffix,"_"+color.getRGB()+suffix);
            ImageIO.write(image, "png", new File(filePath));
         catch (IOException e) 
            e.printStackTrace();
        

    

    /**
     * 方法描述: argb 转rgb
     *
     * @param color
     * @return @link String
     */
    public static String toRGB(int color) 
        int red = (color & 0xff0000) >> 16;// 获取color(RGB)中R位
        int green = (color & 0x00ff00) >> 8;// 获取color(RGB)中G位
        int blue = (color & 0x0000ff);// 获取color(RGB)中B位
        return red + "," + green + "," + blue;
    

    /**
     * 方法描述: rgb 转argb
     *
     * @param color
     * @return @link String
     */
    private static int toARGB(String color)
        String[] rgb=color.split(",");
        int r= Integer.parseInt(rgb[0]);
        int g= Integer.parseInt(rgb[0]);
        int b= Integer.parseInt(rgb[0]);
        int argb = 255 << 24;//设置A(透明度)的值 左移24位是放到最前面
        argb += (r << 16);
        argb += (g << 8);
        argb += b;
        return argb;
    



这个是java代码实现,在idea等编辑器里,运行主方法就行,记得在代码里修改你的照片文件路径。

效果展示

由于透明色,不是在专用的查看上看的话,是没办法显示的,图片中分别有一个是白色透明和黑色透明。

注:未经本人同意,禁止以为个人名义或公司转载到其他平台。

技术分享—java如何实现证件照换底色

demo体验https://www.coderutil.com/rgb证件找换底色是我的智能简历下(https://www.coderutil.com/jianli)的一个小功能,技术实现上走了不少弯路,简单做个技术分享。实现思路图片是由一个个像素块组成的,每个像素块对应一个RGB... 查看详情

技术分享—java如何实现证件照换底色(代码片段)

demo体验https://www.coderutil.com/rgb证件找换底色是我的智能简历下(https://www.coderutil.com/jianli)的一个小功能,技术实现上走了不少弯路,简单做个技术分享。实现思路图片是由一个个像素块组成的,每个像素块对应一个RGB... 查看详情

技术分享—java如何实现证件照换底色(代码片段)

demo体验https://www.coderutil.com/rgb证件找换底色是我的智能简历下(https://www.coderutil.com/jianli)的一个小功能,技术实现上走了不少弯路,简单做个技术分享。实现思路图片是由一个个像素块组成的,每个像素块对应一个RGB... 查看详情

pythonopencv给证件照换底色

...背景颜色、尺寸大小,本文分享一下如果通过PythonOpenCV来实现照片裁剪和更换背景色1、读取照片importcv2importnumpyasnp#读取照片image=cv2.imread(1.jpg)2、修改照片尺寸发现图片太大,修改图片尺寸image=cv2.resize(image,None,fx=0.5,fy=0.5)第一个... 查看详情

怎么用图片编辑器给证件照换底色

  证件照的类型很多,主要表现在背景上,比较常见的有白底、红底和蓝底,有时手头上只有某种颜色的照片,但又需要不同背景的,再去拍照麻烦也浪费钱,其实可以利用迅捷在线图片编辑器进行换底操作,不过对于边缘头... 查看详情

pythonopencv给证件照换底色

✅作者简介:热爱科研的算法开发者,Python、Matlab项目可交流、沟通、学习。 查看详情

不使用photoshop——证件照换背景色操作方法

不使用PhotoShop,证件照换底色操作方法新建Excel表,将照片导入Excel表删除背景保留需要修改的区域并保存选择填充颜色替换证件照背景色因为Excel不能直接另存,可以先复制再将复制的照片粘贴到ppt中,另存照片 查看详情

photoshopps证件照照片换底色

...层填充为目标颜色,新图层覆盖到原图层上,就实现了修改背景色;抠出头像最顶部工具栏,选择-------主体,放在头像上,它会自动识别,识别后,出现虚线& 查看详情

photoshopps证件照照片换底色

...层填充为目标颜色,新图层覆盖到原图层上,就实现了修改背景色;抠出头像最顶部工具栏,选择-------主体,放在头像上,它会自动识别,识别后,出现虚线& 查看详情

opencv-实现背景分离(可用于更改证件照底色)(代码片段)

...离是常见的图像处理方法之一,属于图像分割范畴。如何较优地提取背景区域,难点在于两个:背景和前景的分割。针对该难点,通过人机交互等方法获取背景色作为参考值, 查看详情

java-正装照换底色小demo-技术分享(代码片段)

文章目录前言java-正装照换底色小demo-技术分享01实现思路02效果02::01原图:02::02执行单元测试:02::03效果:03编码实现前言  如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^_^。  而... 查看详情

ps证件照换背景

综述博主原创内容。在PS里,对于抠图,比较有技术含量的便是抠头发丝了,下面为大家带来一个比较详细的抠头发丝的教程。素材准备在这里我们用这张图片作为抠图素材,下面让我们一步步来演示抠图的过程,并为之更换背... 查看详情

word或者wps里证件照的背景底色和像素调整

证件照的背景底色调整和像素调整    关于证件照的背景底色自行调整,比较方便的方法是用Word或者WPS来进行调整,当然也可以利用两者相结合的方法来进行调整,下面来系统的说一下这两种方式。此外,对于证... 查看详情

photoshopps证件照照片换底色

...层填充为目标颜色,新图层覆盖到原图层上,就实现了修改背景色;抠出头像最顶部工具栏,选择-------主体,放在头像上,它会自动识别,识别后,出现虚线,ctrl+j新建图层;也可以用... 查看详情

opencv——floodfill漫水填充,证件照换背景(代码片段)

漫水填充:floodFill函数简单来说,漫水填充就是自动选中与种子像素相连的区域,利用指定颜色进行区域颜色填充。Windows画图工具中的油漆桶功能和Photoshop的魔法棒选择工具,都是漫水填充的改进和延伸。//第一个版本intfloodFill... 查看详情

[数字媒体]photoshop基础之图像校正抠图(证件照)和融合

...频制作、动画制作等内容。希望您喜欢~文章目录一.Excel证件照换背景二.PS图像校正三.PS抠图四.PS图像融合五.总结一.Excel证件照换背景大家在找工作或面试过程中,通常会遇到证件照替换背景的问题,下面介绍Excel替换背... 查看详情

[数字媒体]photoshop基础之图像校正抠图(证件照)和融合

...频制作、动画制作等内容。希望您喜欢~文章目录一.Excel证件照换背景二.PS图像校正三.PS抠图四.PS图像融合五.总结一.Excel证件照换背景大家在找工作或面试过程中,通常会遇到证件照替换背景的问题,下面介绍Excel替换背... 查看详情

ps怎么改背景颜色为蓝色底色

...B不需要PS那么麻烦,手机拍照即可,底色自己选自动生成证件照。1、支付宝首页或微信搜:照点点。2、点击进入照点点,选择寸照或热门证件。3、对着自己拍或者上传照片,即可生成对应底色的证件照了。 参考技术C把照片底... 查看详情