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

程序员盒子技术团队 程序员盒子技术团队     2023-02-17     129

关键词:

demo体验

https://www.coderutil.com/rgb

证件找换底色是我的智能简历下(https://www.coderutil.com/jianli)的一个小功能,技术实现上走了不少弯路,简单做个技术分享。

实现思路

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

快快上代码

talk is cheap, show me the code:

// 比较邪乎了,为啥是30,不是20,其实20也可以,就是一个优化参数
private static final int critical = 30;


/***
 * 处理图片背景色
 * @param path 原图地址
 * @param targetRgb 目标颜色RGB值 16进制颜色码
 * @param isNetWork 原图是否为网络图片地址
 * @return
 */
public static BufferedImage handleBufferImageBackgroundRGB(String path, int targetRgb, boolean isNetWork) throws Exception 
    File file;
    if (isNetWork) 
        // 处理网络图片,先将图片下载到本地(上传的头像)
        file = FileUtil.downloadNetWorkFile(path);
     else 
        file = new File(path);
    
    /**
     * 用来处理图片的缓冲流
     */
    BufferedImage bi = null;
    try 
        /**
         * 用ImageIO将图片读入到缓冲中
         */
        bi = ImageIO.read(file);
     catch (Exception e) 
        log.error("图像加载内存失败", e);
    

    /**
     * 得到图片的长宽
     */
    int width = bi.getWidth();
    int height = bi.getHeight();
    BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
    /**
     * 获取左上角颜色,默认左上角像素块颜色为背景色
     */
    int pixel = bi.getRGB(critical, critical);
    log.info("图片名称:, targetRgb:, width:, height:, pixel:",
            file.getName(), targetRgb, width, height, pixel);

    /**
     * 这里是遍历图片的像素,因为要处理图片的背色,所以要把指定像素上的颜色换成目标颜色
     * 这里 是一个二层循环,遍历长和宽上的每个像素
     */
    Graphics g = image.getGraphics();
    for (int x = 0; x < width; x++) 
        for (int y = 0; y < height; y++) 
            /**
             * 得到指定像素(i,j)上的RGB值,
             */
            int nowPixel = bi.getRGB(x, y);
            /**
             * 进行换色操作,我这里是要把蓝底换成白底,那么就判断图片中rgb值是否在蓝色范围的像素
             */
            // 核心代码:但是这样会有误差,还需要优化边缘、人像边框
            int p = pixel == nowPixel ? targetRgb : nowPixel;
            g.setColor(new Color(p));
            g.fillRect(x, y, 1, 1);
        
    
    log.info("处理完毕:",file.getName());
    return image;

完了,代码一上,没东西可写了,看效果吧!!!!

效果展示

蓝色背景换白色背景:

更换前

更换后

原文:https://www.coderutil.com/article?id=107

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

...智能简历下(https://www.coderutil.com/jianli)的一个小功能,技术实现上走了不少弯路,简单做个技术分享。实现思路图片是由一个个像素块组成的,每个像素块对应一个RGB颜色值。将照片加载到内存,转换成一个二维的... 查看详情

java如何实现证件照换底色|背景换色(代码片段)

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

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

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

pythonopencv给证件照换底色

...要证件照,有些还要求证件照背景颜色、尺寸大小,本文分享一下如果通过PythonOpenCV来实现照片裁剪和更换背景色1、读取照片importcv2importnumpyasnp#读取照片image=cv2.imread(1.jpg)2、修改照片尺寸发现图片太大,修改图片尺寸image=cv2.res... 查看详情

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

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

pythonopencv给证件照换底色

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

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

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

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

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

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

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

photoshopps证件照照片换底色

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

photoshopps证件照照片换底色

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

android|教你如何开发一个证件照diy小程序(代码片段)

...钟在安卓上开发一个微笑抓拍神器详情请戳,本次给大家分享一篇新的实战经验。  不知道大家是否有这样的经历,忽然学校或者公司需要提供让提供个人的一寸或者两寸头像照片,要办理出入证、学生证什么的,并且对... 查看详情

android|教你如何开发一个证件照diy小程序(代码片段)

...钟在安卓上开发一个微笑抓拍神器详情请戳,本次给大家分享一篇新的实战经验。  不知道大家是否有这样的经历,忽然学校或者公司需要提供让提供个人的一寸或者两寸头像照片,要办理出入证、学生证什么的,并且对... 查看详情

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

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

ps证件照换背景

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

photoshopps证件照照片换底色

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

python案例用某度ai接口实现抠图并改图片底色(代码片段)

...文一、注册百度AI账号,创建人像分割应用二、代码实现1.引入库2.获取AccessToken核心代码4.图片底色填充5.图片压缩6.获取图图片大小7.png格式转jpg8.主函数9.完整代码[重要]使用前注意事项最终效果图总结前言嗨嗨,大家好... 查看详情

用python制作可视化gui界面,一键实现证件照背景颜色的替换(代码片段)

作者|欣一来源| Python爱好者集中营今天,我们来分享一下如何通过Python的十来行代码来替换证件照的背景颜色,那么在最后,小编也会将上述的流程制作成一个GUI界面来方便大家使用。关于界面的大致模样其实和先... 查看详情