Recientemente, estoy trabajando en un requisito para sacar imágenes de la base de datos, pero las imágenes tienen un fondo blanco, por lo que el equipo del proyecto espera eliminar el fondo blanco de la imagen.
Este artículo comparte con usted el método de eliminar los fondos blancos de las imágenes de Java para su referencia. El contenido específico es el siguiente
Como se muestra en la figura:
Por supuesto, no es visible en esto. De hecho, la primera imagen tiene un fondo blanco, pero la segunda imagen no. Creo que entiendes lo que dije, entonces, ¿cómo debo implementar este código?
paquete 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; clase pública imageUtil {public static void main (string [] args) {transferalpha (); } public static byte [] transferalpha () {bytearRayOutputStream byteArRaYoutputStream = new byteArRayOutputStream (); Archivo archivo = nuevo archivo ("d: //08//11.png"); InputStream es; try {is = new FileInputStream (archivo); // Si es un tipo de archivo multipart, entonces también tiene un método para convertirlo en una secuencia: IS = file.getInputStream (); BufferedImage bi = imageIO.read (is); Imagen imagen = (imagen) bi; Imageicon imageiCon = new Imageicon (imagen); 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 alfa = 0; for (int j1 = bufferedImage.getMiny (); j1 <bufferedImage.getheHight (); 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 = ((alfa + 1) << 24) | (RGB y 0x00ffffff); } bufferedImage.SetRGB (J2, J1, RGB); }} g2d.drawimage (BufferedImage, 0, 0, imageiCon.getImageObServer ()); ImageIO.Write (BufferedImage, "PNG", nuevo archivo ("d: //08//12.png")); // archivo de salida directo} capt (excepción e) {E.PrintStackTRace (); } Finalmente {} return byTearRauteutputStream.tobytearray (); }} El código funciona en imágenes y copiarlas puede implementar directamente sus funciones.
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.