怎样将蓝底照片换成白底

怎样将蓝底照片换成白底方法 美图秀秀 java 程序 原来的照片是这样的 1 先用美图秀秀将面积较大的蓝底以及边缘比较光滑的部分先刷成白色 或者抠出来都行 2 用 java 程序将边缘部分的蓝色调替换成白色 代码如下 importjava awt image BufferedImag importjava io File importjava

方法:美图秀秀 + java程序。

 

原来的照片是这样的:

怎样将蓝底照片换成白底

 

1. 先用美图秀秀将面积较大的蓝底以及边缘比较光滑的部分先刷成白色,或者抠出来都行。

怎样将蓝底照片换成白底

 

 2. 用java程序将边缘部分的蓝色调替换成白色,代码如下:

import java.awt.image.BufferedImage; import java.io.File; import java.io.FileOutputStream; import javax.imageio.ImageIO; public class ImageProcessor { public static void main(String[] args) throws Exception { File file = new File("xxx.jpg"); //要处理的图片路径 //定义一个RGB的数组,因为图片的RGB模式是由三个 0-255来表示的 比如白色就是(255,255,255) int[] rgb = new int[3]; BufferedImage bi = null; //用来处理图片的缓冲流 try { bi = ImageIO.read(file); //用ImageIO将图片读入到缓冲中 } catch (Exception e) { e.printStackTrace(); } //得到图片的长宽 int width = bi.getWidth(); int height = bi.getHeight(); / * 以下是遍历图片的像素,把指定区域内的像素的颜色换成目标颜色 */ //指定每个区域的范围(x:beginX~endX, y:beginY~endY 围起来的区域) int[] beginX = new int[]{230, 230, 1050}; int[] endX = new int[]{1130, 325, 1130}; int[] beginY = new int[]{0, 400, 400}; int[] endY = new int[]{400, 655, 685}; for (int k = 0; k < beginX.length; k++) { for (int i = beginX[k]; i < endX[k]; i++) { for (int j = beginY[k]; j < endY[k]; j++) { //得到指定像素(i,j)上的RGB值 int pixel = bi.getRGB(i, j); //分别进行位操作得到 r g b上的值 rgb[0] = (pixel & 0xff0000) >> 16; rgb[1] = (pixel & 0xff00) >> 8; rgb[2] = (pixel & 0xff); //进行换色操作,我这里是要把蓝底换成白底,那么就判断图片中rgb值是否在蓝色范围的像素 if (rgb[0] < 155 && rgb[0] > 0 && rgb[1] < 256 && rgb[1] > 105 && rgb[2] < 256 && rgb[2] > 105) { bi.setRGB(i, j, 0xffffff); //是则把该像素换成白色  } } } } System.out.println(file.getName() + "处理完毕!"); / * 将缓冲对象保存到新文件中 */ FileOutputStream ops = new FileOutputStream(new File("xxx.jpg")); //生成的新图片路径 ImageIO.write(bi, "jpg", ops); ops.flush(); ops.close(); } }

处理后:

怎样将蓝底照片换成白底

 

3. 再用美图秀秀把周围未去除的蓝色部分刷成白色。

怎样将蓝底照片换成白底

 

4. 这样基本上就完成了,如果不满意,还可以用美图秀秀中的“局部变色笔”,用黑色在头发边缘处刷一刷。

怎样将蓝底照片换成白底

大功告成!!!!

 

转载于:https://www.cnblogs.com/strugglion/p/7076943.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/205003.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午7:02
下一篇 2026年3月19日 下午7:02


相关推荐

  • 三节锂电池充电芯片,IC设计模块的几种电路

    三节锂电池充电芯片,IC设计模块的几种电路三节锂电池串联在一起的电池组是3.7V*3个=11.1V,11.1V是常规标称电压,充满的话是4.2V*3个=12.6V。我们需要给锂电池充电的话,就需要充满12.6V了。我们一般给三节锂电池充电的话,有2种方式:是USB口输入,5V输入升压型, 是高压15V-20V输入,降压型 锂电池充电芯片 输入电压范围 充电电流 可调 锂电池 (串联) 充电电压 ..

    2026年4月16日
    6
  • 如何获取文心一言 API Key 密钥(分步指南)

    如何获取文心一言 API Key 密钥(分步指南)

    2026年3月12日
    18
  • postMessage使用方法

    postMessage使用方法

    2026年3月26日
    1
  • Android传感器_传感器网络的基本功能

    Android传感器_传感器网络的基本功能前言Android系统提供了对传感器的支持,如果手机的硬件提供了这些传感器的话,那么我们就可以通过代码获取手机外部的状态。比如说手机的摆放状态、外界的磁场、温度和压力等等。对于我们开发者来说,开发传感器十分简单。只需要注册监听器,接收回调的数据就行了,下面来详细介绍下各传感器的开发。使用第一步//获取传感器管理对象SensorManagermSensorManager=…

    2026年4月18日
    5
  • Js判断数组中是否存在某个元素「建议收藏」

    Js判断数组中是否存在某个元素「建议收藏」方法一:indexOf(item,start);Item:要查找的值;start:可选的整数参数,缺省则从起始位子开始查找。indexOf();返回元素在数组中的位置,如果没有则返回-1;例子:vararr=[‘aaa’,’bbb’,’ccc’,’ddd’,’eee’];  vara=arr.indexOf(‘ddd’);  console.log(a);  //3  varb=arr.indexOf(‘d’);  console.log(b);  //-1  我通常的用法:if(

    2022年10月19日
    5
  • 串口服务器调试助手使用教程,串口调试助手使用教程【操作方式】

    串口服务器调试助手使用教程,串口调试助手使用教程【操作方式】喜欢使用电脑的小伙伴们一般都会遇到win7系统串口调试助手使用教程的问题,突然遇到win7系统串口调试助手使用教程的问题就不知道该怎么办了,其实win7系统串口调试助手使用教程的解决方法非常简单,按照1:打开电脑浏览器,进入百度搜索在输入框输入:友善串口助手,回车进行搜索,在第一条直接点击下载,安装即可.2:安装完成后,桌面上会有一个这样的图标我们双击打开.来操作就行了,接下来小伙伴们…

    2022年4月27日
    64

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号