El Alpha no está perdido.
Debe usar el constructor (int, boolean) que toma la información de los píxeles y especifica si tiene valores alfa con el booleano o el constructor que toma 4 valores, Rojo, Verde, Azul y Alfa.
la (int, int, int, int) la información del constructor de la JavaDoc
para acortar código, siempre se puede reemplazar todo el siguiente código con Color color = new Color(i.getRGB(x, y), true);
que cuenta el constructor color que hace la información de píxeles contener valor alfa
la (int, boolean) la información del constructor JavaDoc
Tenga en cuenta que a veces, cuando la recuperación de la alfa de la siguiente manera podría devolver -1, en cuyo caso esto significa que vuelve de nuevo a 255, por lo que debe realizar 256- 1 para obtener el valor alfa real. Este fragmento muestra cómo cargar una imagen y obtener el color de esa imagen en ciertas coordenadas, en este caso, 0,0. El siguiente ejemplo puede mostrarle cómo recuperar cada valor de color, incluido alfa, y reconstruirlo en un nuevo Color.
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 como se puede ver como se 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.
que significa que el valor Alfa también se recupera.
No estoy exactamente seguro de cómo funciona esta clase, pero estás usando una función llamada 'getRGB' y luego te sorprende que solo obtenga RGB? – murgatroid99
Sí, eso es cierto, pero he comprobado anteriormente si el píxel contiene algún valor alfa con el método getRGB(). http://stackoverflow.com/questions/10419838/how-can-i-find-out-where-a-bufferedimage-has-alpha-in-java – Rapti
Ya veo. ¿A qué te refieres con "el alfa se pierde"? – murgatroid99