我有一张图片,背景是白色的,我现在想要他成透明的。不是假透明,是去除掉背景。
大神们有招不?

解决方案 »

  1.   

    /**
     * 返回無背景色的印章図像所在路径
     * @param image 印章図像文件Buffered
     * @return 印章図像文件Buffered
     */
    public BufferedImage getNoBgColorImage(BufferedImage image) {
    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());
    // ImageIO.write(bufferedImage, "png", new File("d:/test/png.png"));
    return bufferedImage;

    将白色背景变成透明. 注意:jpg文件不能背景透明, png的可以透明