服务器之家

服务器之家 > 正文

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

时间:2021-04-23 13:14     来源/作者:小目标实现了吗

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

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

标签:

相关文章

热门资讯

2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
yue是什么意思 网络流行语yue了是什么梗
yue是什么意思 网络流行语yue了是什么梗 2020-10-11
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总 2020-11-13
Intellij idea2020永久破解,亲测可用!!!
Intellij idea2020永久破解,亲测可用!!! 2020-07-29
返回顶部