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

2025-05-29 0 101

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

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

}

}

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

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

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

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 java如何去除图片中的白色背景 https://www.kuaiidc.com/111594.html

相关文章

发表评论
暂无评论