Olá turma!!!
Gostaria de saber como colocar o fundo transparente em uma imagem construída pela classe BufferImage.
Obrigada. :?: :?: :?:
Olá turma!!!
Gostaria de saber como colocar o fundo transparente em uma imagem construída pela classe BufferImage.
Obrigada. :?: :?: :?:
A transparência está no canal alpha no pixel.
Para isso, utilize BufferedImage.TYPE_INT_ARGB e então passe a matriz de cores do pixel com os 4 canais de cor: alpha, red, green e blue.
Eu já utilizei a classe BufferImage passando como argumento o TYPE_INT_ARGB, e para pintar utilizei a classe Graphics2D, porém a imagem não fica com o fundo transparente, eu gostaria q o fundo da imagem ficasse da cor do fundo q eu setar para o Canvas. Vc mencionou alguma coisa a respeito de fazer uma matriz setando as cores do pixel, como eu poderia fazer isso?
Pelo método que eu falei você teria que criar a imagem um pouco mais “à mão”, pixel a pixel, ao invés de pela classe que você mencionou.
A classe BufferedImage tem o método setRGB em que você passa como parâmetro a posição x e y do pixel e sua cor.
Quanto a matriz com a cor, veja no código abaixo como você pode trabalhar com ela:
// (1) decoding
int rgba = ...; // comes from PixelGrabber, BufferedImage.getRGB etc.
int red = (rgba >> 16) & 0xff;
int green = (rgba >> 8) & 0xff;
int blue = rgba & 0xff;
int alpha = (rgba >> 24) & 0xff;
// (2) now modify red, green, blue and alpha as you like;
// make sure that each of the four values stays in the
// interval 0 to 255
...
// (3) and encode back to an int, e.g. to give it to MemoryImageSource or
// BufferedImage.setRGB
rgba = (alpha << 24) | (red << 16) | (green << 8) | blue;
Mas realmente deve existir algum jeito mais simples…
Muito obrigada pela ajuda.
Fico muito agradecida