Подтвердить что ты не робот

Как читать пиксельный цвет в java BufferedImage с прозрачностью

Я читаю пиксельный цвет в BufferedImage следующим образом:

.....
InputStream is = new BufferedInputStream(conn.getInputStream());
BufferedImage image = ImageIO.read(is);

int color = image.getRGB(x, y);

int  red = (colour & 0x00ff0000) >> 16;
int  green = (colour & 0x0000ff00) >> 8;
int  blue = colour & 0x000000ff;

Теперь это работает отлично, за исключением png с прозрачностью. Я считаю, что если x, y ссылаются на прозрачный пиксель без цвета, я все равно читаю цвет, как правило, тот же цвет, что и в других местах на изображении.

Как определить, что пиксель прозрачен и не окрашен?

Спасибо

4b9b3361

Ответ 1

int alpha = (colour>>24) & 0xff;

В результате получается значение от 0 (полностью прозрачное) до 255 (полностью непрозрачное).