服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Java教程 - java如何去除图片中的白色背景

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

2021-04-23 13:14小目标实现了吗 Java教程

这篇文章主要为大家详细介绍了java去除图片中白色背景的方法,教大家如何将图片中的白色背景去掉,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

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

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

如图所示:

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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
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();
  }
}

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

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

原文链接:https://blog.csdn.net/datouniao1/article/details/80061735

延伸 · 阅读

精彩推荐