Baru -baru ini, saya sedang mengerjakan persyaratan untuk mengambil gambar dari database, tetapi gambar memiliki latar belakang putih, sehingga tim proyek berharap untuk menghapus latar belakang putih gambar.
Artikel ini berbagi dengan Anda metode menghapus latar belakang putih dari gambar oleh Java untuk referensi Anda. Konten spesifiknya adalah sebagai berikut
Seperti yang ditunjukkan pada gambar:
Tentu saja, itu tidak terlihat dalam hal ini. Bahkan, gambar pertama memiliki latar belakang putih, tetapi gambar kedua tidak. Saya yakin Anda mengerti apa yang saya katakan, jadi bagaimana saya harus mengimplementasikan kode ini:
paket com.wdg.util; impor java.awt.graphics2d; impor java.awt.image; impor java.awt.image.bufferedimage; impor java.io.bytearrayoutputStream; impor java.io.file; impor java.io.fileInputStream; impor java.io.inputstream; impor javax.imageio.imageio; impor javax.swing.imageicon; class public Imageutil {public static void main (string [] args) {transferalpha (); } public static byte [] transferalpha () {bytearrayoutputStream bytearrayoutputStream = new bytearrayoutputStream (); File file = file baru ("d: //08//11.png"); Inputstream adalah; coba {is = new fileInputStream (file); // Jika itu adalah tipe multipartfile, maka ia juga memiliki metode untuk mengubahnya menjadi aliran: is = file.getInputStream (); BufferedImage Bi = ImageIo.Read (IS); Gambar gambar = (gambar) bi; ImageIcon Imageicon = ImageIcon baru (gambar); BufferedImage bufferedImage = BufferedImage baru (ImageIcon.geticonWidth (), Imageicon.geticonHeight (), bufferedImage.type_4byte_abgr); Graphics2d G2D = (Graphics2D) bufferedImage.getGraphics (); G2D.DrawImage (ImageIcon.getImage (), 0, 0, Imageicon.getImageObserver ()); int alpha = 0; untuk (int j1 = bufferedimage.getMiny (); j1 <bufferedimage.getheight (); j1 ++) {for (int j2 = bufferedimage.getMinx (); j2 <bufferedimage.getwidth (); j2 ++) {int rgb = bufferedimage.getrgb (j2 ++) {int rgb = bufferedimage.getrgb (j2 ++) {int rgb = bufferedimage.getrgb (j2 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); } bufferedImage.setrgb (J2, J1, RGB); }} g2d.drawImage (bufferedImage, 0, 0, Imageicon.getImageObserver ()); ImageIO.write (bufferedImage, "png", file baru ("d: //08//12.png")); // file output langsung} catch (pengecualian e) {e.printstacktrace (); } akhirnya {} return bytearrayoutputStream.tobyteArray (); }} Kode beroperasi pada gambar, dan menyalinnya dapat secara langsung mengimplementasikan fungsi Anda.
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.