Recently, I am working on a requirement to take out pictures from the database, but the pictures have a white background, so the project team hopes to remove the white background of the picture.
This article shares with you the method of removing white backgrounds from pictures by Java for your reference. The specific content is as follows
As shown in the figure:
Of course, it is not visible on this. In fact, the first picture has a white background, but the second picture does not. I believe you understand what I said, so how should I implement this code:
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); // If it is a MultipartFile type, then it also has a method to convert it into a stream: 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 & 0xff000) >> 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"));// Direct output file} catch (Exception e) { e.printStackTrace(); } finally { } return byteArrayOutputStream.toByteArray(); } } The code operates on images, and copying them can directly implement your functions.
The above is all the content of this article. I hope it will be helpful to everyone's learning and I hope everyone will support Wulin.com more.