최근에, 나는 데이터베이스에서 사진을 꺼내야하는 요구 사항을 연구하고 있지만 사진에는 흰색 배경이 있으므로 프로젝트 팀은 그림의 흰색 배경을 제거하기를 희망합니다.
이 기사는 참조를 위해 Java의 사진에서 흰색 배경을 제거하는 방법을 공유합니다. 특정 내용은 다음과 같습니다
그림과 같이 :
물론, 이것에 대해서는 보이지 않습니다. 실제로 첫 번째 그림에는 흰색 배경이 있지만 두 번째 그림은 그렇지 않습니다. 나는 당신이 내가 말한 것을 이해한다고 믿습니다.이 코드를 어떻게 구현 해야하는지
패키지 com.wdg.util; import java.awt.graphics2d; import java.awt.image; java.awt.image.bufferedimage import; 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 (); 파일 = 새 파일 ( "d : //08//11.png"); 입력 스트림은; try {is = new FileInputStream (파일); // multipartFile 유형 인 경우 스트림으로 변환하는 메소드도 있습니다. is = file.getInputStream (); BufferedImage bi = imageio.read (is); 이미지 이미지 = (이미지) BI; imageicon imageicon = new imageicon (이미지); 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 (); 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", 새 파일 ( "d : //08/12.png"); // 직접 출력 파일} catch (예외 e) {e.printstacktrace (); } 마침내 {} return bytearrayoutputStream.tobytearRay (); }} 코드는 이미지에서 작동하며 복사하면 기능을 직접 구현할 수 있습니다.
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.