Ceci est le code dont vous avez besoin, vous devez mettre la même couleur avec 100% alpha dans une nouvelle image avec canal alpha.
// bufferedImage is your image.
if (bufferedImage.getType() == BufferedImage.TYPE_3BYTE_BGR) {
BufferedImage bff = new BufferedImage(bufferedImage.getWidth(), bufferedImage.getHeight(), BufferedImage.TYPE_4BYTE_ABGR);
for (int y = 0; y < bufferedImage.getHeight(); ++y) {
for (int x = 0; x < bufferedImage.getWidth(); ++x) {
int argb = bufferedImage.getRGB(x, y);
bff.setRGB(x, y, argb & 0xFF000000); // same color alpha 100%
}
}
return bff;
} else {
return bufferedImage;
}
si vous voulez mettre une image transparente sur un fond blanc, vous devez en effet utiliser une nouvelle BufferedImage de type différent. Le code pour le faire est le suivant:
// bufferedImage is your image.
if (bufferedImage.getType() == BufferedImage.TYPE_4BYTE_ABGR) {
for (int y = 0; y < bufferedImage.getHeight(); ++y) {
for (int x = 0; x < bufferedImage.getWidth(); ++x) {
int argb = bufferedImage.getRGB(x, y);
if((argb & 0x00FFFFFF) == 0x00FFFFFF){ //if the pixel is transparent
bufferedImage.setRGB(x, y, 0xFFFFFFFF); // white color.
}
}
}
return bufferedImage;
}
Que voulez-vous dire par "couleurs changées"? Des couleurs? Seulement les pixels avec alpha? – Robert
Il semble que les couleurs ont été inversées. Je pense qu'il a juste utilisé ABG comme BGR et ignoré le composant Red d'ABGR. –
Pouvez-vous montrer le code que vous avez utilisé pour dessiner, qui a changé les couleurs? Je trouve cela très étrange + Je suis curieux. :-) – haraldK