Изменить альфа-значение BufferedImage?

Я думаю, что эта проблема может возникнуть, когда вы смешиваете, используя npm и пряжу, может быть? Что я сделал, чтобы это исправить:

  1. Удалить node_modules
  2. Повторно добавить модули, используя yarn add
  3. yarn start

Теперь отлично работает

8
задан William 19 March 2009 в 00:07
поделиться

3 ответа

Я не полагаю, что существует единственная простая команда, чтобы сделать это. Несколько опций:

Первое является самым простым реализовать, IMO.

4
ответ дан 5 December 2019 в 07:37
поделиться

@ Нил Коффи: Спасибо, я тоже искал это; однако, Ваш код работал не очень хорошо для меня (белый фон стал черным).

Я закодировал что-то вроде этого, и это прекрасно работает:

public void setAlpha(byte alpha) {       
    alpha %= 0xff; 
    for (int cx=0;cx<obj_img.getWidth();cx++) {          
        for (int cy=0;cy<obj_img.getHeight();cy++) {
            int color = obj_img.getRGB(cx, cy);

            int mc = (alpha << 24) | 0x00ffffff;
            int newcolor = color & mc;
            obj_img.setRGB(cx, cy, newcolor);            

        }

    }
}

Где obj_img - это BufferedImage.TYPE_INT_ARGB.

Я изменяю альфа с помощью setAlpha ((байт) 125); диапазон альфа теперь 0-255.

Надеюсь, кто-то найдет это полезным.

10
ответ дан 5 December 2019 в 07:37
поделиться

Я на 99% уверен методы, которые утверждают, что имели дело со значением "RGB", упакованным в интервал, на самом деле имеют дело с ARGB. Таким образом, необходимо смочь сделать что-то как:

for (all x,y values of image) {
  int argb = img.getRGB(x, y);
  int oldAlpha = (argb >>> 24);
  if (oldAlpha == 100) {
    argb = (80 << 24) | (argb & 0xffffff);
    img.setRGB(x, y, argb);
  }
}

Для скорости Вы могли, возможно, использовать методы для получения блоков пиксельных значений.

1
ответ дан 5 December 2019 в 07:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: