L'Alpha non è perso.
È necessario utilizzare il costruttore (int, booleano) che prende le informazioni sui pixel e specifica se ha valori alfa con il booleano o il costruttore che accetta 4 valori, Rosso, Verde, Blu e Alfa.
il (int, int, int, int) informazioni costruttore dal JavaDoc
Per accorciare il codice, è sempre possibile sostituire tutti il seguente codice con Color color = new Color(i.getRGB(x, y), true);
che racconta il costruttore di colore che le informazioni dei pixel fa contenere il valore alfa
il (int, boolean) informazioni costruttore dal JavaDoc
noti che a volte durante il recupero alfa seguente modo potrebbe restituire -1, nel qual caso questo significa che torna indietro al 255, quindi è necessario eseguire 256- 1 per ottenere il valore alfa effettivo. questo frammento mostra come caricare un'immagine e ottenere il colore di quell'immagine su determinate coordinate, in questo caso 0,0. L'esempio seguente può mostrare come recuperare ciascun valore di colore compreso l'alfa e ricostruirlo con un nuovo colore.
import java.awt.Color;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import javax.imageio.ImageIO;
public class main {
public static void main(String [] args){
BufferedImage image = null;
try {
image = ImageIO.read(new URL("image.png"));
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
int pixel = image.getRGB(0, 0);
int alpha = (pixel >> 24) & 0xff;
int red = (pixel >> 16) & 0xff;
int green = (pixel >> 8) & 0xff;
int blue = (pixel >> 0) & 0xff;
Color color1 = new Color(red, green, blue, alpha);
//Or use
Color color2 = new Color(image .getRGB(0, 0), true);
}
}
BufferedImages getRGB (int, int) JavaDoc come si può vedere come si dice:
Returns an integer pixel in the default RGB color model (TYPE_INT_ARGB) and default sRGB colorspace. Color conversion takes place if this default model does not match the image ColorModel. There are only 8-bits of precision for each color component in the returned data when using this method.
che significa che il valore di Alpha è anche recuperato.
Non sono esattamente sicuro di come funzioni questa classe, ma si sta utilizzando una funzione chiamata 'getRGB' e quindi si è sorpresi che ottenga solo RGB? – murgatroid99
Sì, è vero, ma ho controllato in precedenza se il pixel contiene un valore alfa usando il metodo getRGB(). http://stackoverflow.com/questions/10419838/how-can-i-find-out-where-a-bufferedimage-has-alpha-in-java – Rapti
Capisco. Cosa intendi esattamente per "l'alfa si perde"? – murgatroid99