Existe uma maneira de definir uma cor padrão para transparência ao usar ColorConvertOp em Java2D?
-
28-10-2019 - |
Pergunta
Estou convertendo uma imagem com transparência em um espaço de cores sem transparência.Eu gostaria de definir uma cor de fundo para as áreas transparentes.Agora mesmo, quando eu o converter, qualquer área transparente torna-se preta na imagem final.Existe uma maneira de fazer isso enquanto estou convertendo entre ColorSpaces?Este é o meu código que uso para converter entre espaços de cores:
public BufferedImage convertColorspace( BufferedImage source, int newType) {
BufferedImage destination = new BufferedImage( source.getWidth(), source.getHeight(), newType);
ColorConvertOp colorConvertOp = new ColorConvertOp(null);
colorConvertOp.filter(source, destination);
return destination;
}
// here is how its used
BufferedImage converted = convertColorspace(combinedImage, BufferedImage.TYPE_3BYTE_BGR);
Estou convertendo de BufferedImage.TYPE_4BYTE_ARGB para BufferedImage.TYPE_3BYTE_BGR.
Solução
Que tal:
BufferedImage temp = new BufferedImage(source.getWidth(), source.getHeight(),
BufferedImage.TYPE_INT_ARGB);
Graphics2D g2 = temp.createGraphics();
g2.setColor(Color.green);
g2.fillRect(0, 0, source.getWidth(), source.getHeight());
g2.drawImage(0, 0, source, null);
g2.dispose();
Em seguida, chame colorConvertOp.filter
com temp
em vez de source
.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow