Делаем каждый пиксель изображения определенного цвета прозрачным - PullRequest
2 голосов
/ 07 декабря 2010

Этот вопрос является дубликатом этого вопроса: Прозрачность каждого пикселя изображения определенного цвета

Но мне нужен эквивалент Java. И мне нужен тип изображения (например PNG, BMP, ...), который может содержать этот цвет с полной прозрачностью (альфа = 0) И, конечно, способ сохранить его в виде файла.

Ответы [ 3 ]

3 голосов
/ 07 декабря 2010
import java.awt.*;
import java.awt.image.*;

public class Transparency {
  public static Image makeColorTransparent
    (Image im, final Color color) {
    ImageFilter filter = new RGBImageFilter() {
      // the color we are looking for... Alpha bits are set to opaque
      public int markerRGB = color.getRGB() | 0xFF000000;

      public final int filterRGB(int x, int y, int rgb) {
        if ( ( rgb | 0xFF000000 ) == markerRGB ) {
          // Mark the alpha bits as zero - transparent
          return 0x00FFFFFF & rgb;
          }
        else {
          // nothing to do
          return rgb;
          }
        }
      }; 

    ImageProducer ip = new FilteredImageSource(im.getSource(), filter);
    return Toolkit.getDefaultToolkit().createImage(ip);
    }
}

Изменен код, чтобы сделать каждый пиксель прозрачным

Источник: http://www.rgagnon.com/javadetails/java-0265.html

1 голос
/ 07 декабря 2010

Используйте ImageIO.read для чтения файла и ImageIO.write для записи.Используйте getRGB и setRGB методы BufferedImage, чтобы изменить цвета.

0 голосов
/ 08 декабря 2010

Можно использовать LookupOp с четырехкомпонентным LookupTable, который устанавливает нулевой альфа-компонент для цветов, соответствующих фону. Примеры можно найти в Использование класса Java 2D LookupOp Filter для обработки изображений и Обработка изображений с помощью Java 2D .

...