java如何去除图片中的白色背景

最近在做一个需求是从数据库里面取出图片,但是图片都有一个白色的背景,于是项目组希望可以将图片的白色的背景去掉。

本文为大家分享了java去除图片中的白色背景的方法,供大家参考,具体内容如下

如图所示:

当然在这个上面是看不出来的,其实第一张图片是有一个白色的背景的,但是第二张图片没有,相信你理解我说的,那么这个代码我应该如何实现:

package com.wdg.util; 

import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream; 

import javax.imageio.ImageIO;
import javax.swing.ImageIcon; 

public class ImageUtil {
  public static void main(String[] args) {
    transferAlpha();
  } 

  public static byte[] transferAlpha() { 

    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
    File file = new File("D:\\08\\11.png");
    InputStream is;
    try {
      is = new FileInputStream(file);
      // 如果是MultipartFile类型,那么自身也有转换成流的方法:is = file.getInputStream();
      BufferedImage bi = ImageIO.read(is);
      Image image = (Image) bi;
      ImageIcon imageIcon = new ImageIcon(image);
      BufferedImage bufferedImage = new BufferedImage(imageIcon.getIconWidth(), imageIcon.getIconHeight(),
          BufferedImage.TYPE_4BYTE_ABGR);
      Graphics2D g2D = (Graphics2D) bufferedImage.getGraphics();
      g2D.drawImage(imageIcon.getImage(), 0, 0, imageIcon.getImageObserver());
      int alpha = 0;
      for (int j1 = bufferedImage.getMinY(); j1 < bufferedImage.getHeight(); j1++) {
        for (int j2 = bufferedImage.getMinX(); j2 < bufferedImage.getWidth(); j2++) {
          int rgb = bufferedImage.getRGB(j2, j1); 

          int R = (rgb & 0xff0000) >> 16;
          int G = (rgb & 0xff00) >> 8;
          int B = (rgb & 0xff);
          if (((255 - R) < 30) && ((255 - G) < 30) && ((255 - B) < 30)) {
            rgb = ((alpha + 1) << 24) | (rgb & 0x00ffffff);
          } 

          bufferedImage.setRGB(j2, j1, rgb); 

        }
      } 

      g2D.drawImage(bufferedImage, 0, 0, imageIcon.getImageObserver());
      ImageIO.write(bufferedImage, "png", new File("D:\\08\\12.png"));// 直接输出文件
    } catch (Exception e) {
      e.printStackTrace();
    } finally { 

    }
    return byteArrayOutputStream.toByteArray();
  }
}

代码是对图片进行操作,复制过去就可以直接实现你的功能了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

您可能感兴趣的文章:

  • java创建以任意图片为背景的窗口
  • Java Swing实现窗体添加背景图片的2种方法详解
  • JAVA Frame 窗体背景图片,首位相接滚动代码实例
  • JAVA GUI自定义JPanel画板背景
  • 利用java实现二维码和背景图的合并
  • 解决java压缩图片透明背景变黑色的问题
  • java处理图片背景颜色的方法
(0)

相关推荐

  • Java Swing实现窗体添加背景图片的2种方法详解

    本文实例讲述了Java Swing实现窗体添加背景图片的2种方法.分享给大家供大家参考,具体如下: 在美化程序时,常常需要在窗体上添加背景图片.通过搜索和测试,发现了2种有效方式.下面分别介绍. 1. 利用JLabel加载图片 利用JLabel自带的setIcon(Icon icon)加载icon,并设置JLabel对象的位置和大小使其完全覆盖窗体.这是一个很取巧的办法,代码非常简单,如下所示. JLabel lbBg = new JLabel(imageIcon); lbBg.setBound

  • JAVA Frame 窗体背景图片,首位相接滚动代码实例

    背景图片连续滚动,程序已经跑过.前提!背景图片宽度比窗体长些,代码如下: import Java.awt.Graphics; import java.awt.Image; import javax.swing.ImageIcon; import mine.game.util.PropertiesUtil; @SuppressWarnings("serial") public class GameFrame extends MyFrame{ private Image img=Image

  • java创建以任意图片为背景的窗口

    swing自带的窗体是不能够满足我们的应用需求的,所以需要制作任意图片和形状的JFrame框体,比如下图: 并且可以设置窗体背景图片的透明度 下面说明如何做到上图的效果: (1)首先你得需要一张好看的图片,比如羊皮纸.但是这个下载的图片是方方正正的矩形,羊皮纸的形状在图片的内部,所以我们用美图秀秀或者PS中的抠图功能将羊皮纸抠出来,如下: (2)将图片保存为透明背景即可. (3)接着写一个myJFrame继承JFrame,代码如下: import com.sun.awt.AWTUtilities

  • 解决java压缩图片透明背景变黑色的问题

    复制代码 代码如下: public class Picture {          // TODO Auto-generated constructor stub       public static void resizePNG(String fromFile, String toFile, int outputWidth, int outputHeight,boolean proportion) {              try {                 File f2 =

  • JAVA GUI自定义JPanel画板背景

    自定义JPanel面板背景 一.前言 1.GUI全称是Graphical User Interface,就是图形用户界面.JAVA的GUI应用广泛在我们生活中也很常见.很多应用使用该GUI编程设计,像点击QQ图标弹出对应的登录窗体. 一般程序与用户的交互都基于对应程序的运行界面. 2.JPanel面板是SWING下的一个面板容器类.该面板支持嵌套,可设置布局方式,设置不同的布局管理器可添加其他控件像JButton按钮,JTextField文本框等.来设计完善一个程序界面窗体. 作为绘制面板支持s

  • 利用java实现二维码和背景图的合并

    背景介绍: 最近我们这边需要做一个自动生成二维码并且还要将二维码嵌入现有的背景模板中,一直又没写过这些方面的东西,突然写还真是有点迷糊,特别是对于java图片API并不很熟悉,所以参考了很多网友的分享,很快做出来了,现在分享一下 注意: 关于二维码的生成方式在文章java生成带logo的多彩二维码已经写过了,大家可以合起来一起使用. 实例代码: BufferedImage image= bim;//二维码 BufferedImage bg= ImageIO.read(路径);//获取北京图片 G

  • java处理图片背景颜色的方法

    今天老师想让我帮忙把她们200多张寸照换成白底的,这些寸照里面多为蓝色底,红色底. 用ps?不!用java!! 对,我第一反应就是用java,到网上找到了一个获得图片像素的源码.动手改了下,就编出来了,200多张照片的处理就用了半分钟. /** * 功能: * 将蓝底寸照批量转换为白底 * 主要是可以几百张,几千张地处理 * @author 赵俊夫 * */ public class ImageColorDemo { public static void main(String args[])

  • java如何去除图片中的白色背景

    最近在做一个需求是从数据库里面取出图片,但是图片都有一个白色的背景,于是项目组希望可以将图片的白色的背景去掉. 本文为大家分享了java去除图片中的白色背景的方法,供大家参考,具体内容如下 如图所示: 当然在这个上面是看不出来的,其实第一张图片是有一个白色的背景的,但是第二张图片没有,相信你理解我说的,那么这个代码我应该如何实现: package com.wdg.util; import java.awt.Graphics2D; import java.awt.Image; import jav

  • 利用Java Set 去除重复object的方法

    实例如下: import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; /** * 编写者:CP * <br />类描述:set集合针对String 类型和8大基础数据类型 过滤掉重复数据,如果存放的是其他类型对象,则需要重写hashCode方法和equals方法,当equals 比较相等时,则会去比较hashCode值 hashCode的值 如果一致的话,

  • Java字符串去除特殊字符内容的实例

    如下所示: //带有特殊符号字符串示例 String str = "我的名字(测试)"; //去除特殊字符内容 其中的"()"为特殊字符 str.replaceAll("[^0-9a-zA-Z\u4e00-\u9fa5.,,.?""]+",""): //去除特殊符号后字符串内容: System.out.println("字符串str:" + str");// str:我的名字测

  • Python实现去除图片中指定颜色的像素功能示例

    本文实例讲述了Python实现去除图片中指定颜色的像素功能.分享给大家供大家参考,具体如下: 这里用python去除图片白色像素 需要python和pil from PIL import Image import numpy as np import cv2 img2 = Image.open('./Amazing_COL_2Fix.bmp') img1 = Image.open('./Amazing_RGB_2L.bmp') # img1 = img1.convert('RGBA') img2

  • OpenCV如何去除图片中的阴影的实现

    一.前言 如果你自己打印过东西,应该有过这种经历.如果用自己拍的图片,在手机上看感觉还是清晰可见,但是一打印出来就是漆黑一片.比如下面这两张图片: 因为左边的图片有大片阴影,所有打印出来的图片不堪入目(因为打印要3毛钱,所以第二张图片只是我用程序模拟的效果). 那有什么办法可以解决吗?答案是肯定的,今天我们就来探讨几个去除阴影的方法. 二.如何去除阴影? 首先为了方便处理,我们通常会对图片进行灰度转换(即将图片转换成只有一个图层的灰色图像). 然后我们分析一下,在上面的图片中有三个主色调,分别是

  • Java+OpenCV实现图片中的人脸识别

    目录 MatOfRect.detectMultiScale函数 实现代码 ImageViewer.java DetectFace.java 运行 把识别出来的脸存成文件 经过前三个教程,我们可以知道了OpenCV的基本使用了. 今天,我们就要讲OpenCV中认出,这是一个人脸是怎么做的. MatOfRect.detectMultiScale函数 OpenCV用的是detectMultiScale来认出这是一个脸的.记得,这只是认出这是一个脸,而不是这个脸是谁. 这个脸是谁我们会逐步展开,前面勿求

  • Java实现去除文档阴影的示例代码

    目录 一.前言 二.实现原理 1. 图像 2. 灰度转换 3.阈值处理 三.代码实现 1.读取图像 2.阈值处理 一.前言 文稿扫描大家用的都比较频繁.想是各种证件.文件都可以通过扫描文稿功能保存到手机.相比直接拍照,在扫描文稿时,程序会对图像进行一些矫正.比如去除阴影.修正倾斜.旋转矫正等.进行这些处理后的图片要更加容易识别.今天就来讨论以下去除阴影的操作. 二.实现原理 1. 图像 在开始实现前,我们来了解一些图像相关的知识.这里讨论RGB图像,也就是我们俗称的彩色的图像.图像可以被看作是一

  • Java中去除字符串中所有空格的几种方法

    JAVA中去掉空格 1. String.trim() trim()是去掉首尾空格 2.str.replace(" ", ""); 去掉所有空格,包括首尾.中间  复制代码 代码如下: String str = " hell o ";  String str2 = str.replaceAll(" ", "");  System.out.println(str2); 3.或者replaceAll("

  • 教你使用java实现去除各种空格

    1. String.trim() trim()是去掉首尾空格 2.str.replace(" ", ""); 去掉所有空格,包括首尾.中间 String str = " hell o "; String str2 = str.replaceAll(" ", ""); System.out.println(str2); 3.或者replaceAll(" +","");

随机推荐