Recentemente, estou trabalhando em um requisito para tirar fotos do banco de dados, mas as fotos têm um fundo branco, para que a equipe do projeto espera remover o fundo branco da imagem.
Este artigo compartilha com você o método de remoção de antecedentes brancos de imagens da Java para sua referência. O conteúdo específico é o seguinte
Como mostrado na figura:
Claro, não é visível nisso. De fato, a primeira foto tem um fundo branco, mas a segunda foto não. Eu acredito que você entende o que eu disse, então como devo implementar este código:
pacote com.wdg.util; importar java.awt.graphics2d; importar java.awt.image; importar java.awt.image.bufferiMage; importar java.io.byteArrayOutputStream; importar java.io.file; importar java.io.fileInputStream; importar java.io.inputStream; importar javax.imageio.imageio; importar javax.swing.imageicon; classe pública imageUtil {public static void main (string [] args) {transferalpha (); } public static byte [] transferalpha () {byteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream (); Arquivo de arquivo = novo arquivo ("d: //08//11.png"); InputStream IS; tente {is = new FileInputStream (arquivo); // Se for um tipo multipart -arquivo, ele também possui um método para convertê -lo em um fluxo: is = file.getInputStream (); BufferImage bi = imageio.read (IS); Imagem de imagem = (imagem) bi; Imageicon imageicon = new imageicon (imagem); BufferImage bufferImage = new bufferImage (imageicon.geticonwidth (), imageicon.geticonheight (), bufferiMage.type_4byte_abgr); Graphics2d G2D = (Graphics2d) bufferImage.getGraphics (); g2d.drawimage (imageicon.getImage (), 0, 0, imageicon.getImageObServer ()); int alfa = 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 = ((alfa + 1) << 24) | (RGB & 0x00FFFFFF); } bufferImage.setRGB (J2, J1, RGB); }} g2d.drawimage (bufferImage, 0, 0, imageicon.getImageObServer ()); Imageio.write (bufferImage, "png", novo arquivo ("d: //08//12.png")); // arquivo de saída direto} catch (Exceção e) {e.printStacktrace (); } finalmente {} retorna bytearrayoutputStream.tobytearray (); }} O código opera em imagens e copiá -las pode implementar diretamente suas funções.
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.