欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2023-11-29 10:53:04
最近在做一个需求是从数据库里面取出图片,但是图片都有一个白色的背景,于是项目组希望可以将图片的白色的背景去掉。 本文为大家分享了java去除图片中的白色背景的方法,供大家...

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

本文为大家分享了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(); 
  } 
} 

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

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