public class Alpha { public static void transferAlpha(String imagePath,String outputDir,String outputFileName) throws Exception { Image image=ImageIO.read(new File(imagePath)); ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); try { 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 & 0xff00) >> 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()); new File(outputDir).mkdir(); ImageIO.write(bufferedImage, "png", new File(outputDir+outputFileName)); ImageIO.write(bufferedImage, "png", byteArrayOutputStream); } catch (Exception e) { e.printStackTrace(); } finally { } //return byteArrayOutputStream.toByteArray(); }
时间: 2024-10-23 19:59:50