Je sais qu'il y a des questions similaires à cela mais celles-ci ne répondent pas à ma question. Comme le titre lit, j'utilise JavaFX Image classe, pas bufferedImage.javafx argb to conversion en niveaux de gris
J'ai utilisé la réponse à this autre question, mais l'image résultante est vide.
Ceci est mon code:
public static Image toGrayScale(Image sourceImage) {
PixelReader pixelReader = sourceImage.getPixelReader();
int width = (int) sourceImage.getWidth();
int height = (int) sourceImage.getHeight();
WritableImage grayImage = new WritableImage(width, height);
for (int y = 0; y < height; y++) {
for (int x = 0; x < width; x++) {
int pixel = pixelReader.getArgb(x, y);
int red = ((pixel >> 16) & 0xff);
int green = ((pixel >> 8) & 0xff);
int blue = (pixel & 0xff);
int grayLevel = (int) (0.2162 * red + 0.7152 * green + 0.0722 * blue)/3;
int gray = (grayLevel << 16) + (grayLevel << 8) + grayLevel;
grayImage.getPixelWriter().setArgb(x, y, gray);
}
return grayImage;
}
quelqu'un peut me dire quel est le problème.
On dirait un double de [Comment changer la couleur de l'image dans JavaFX] (http://stackoverflow.com/questions/18124364/how-to-change-color-of-image -in-javafx)? – jewelsea
Il vous manque un support pour fermer votre boucle interne. – ManoDestra
@jewelsea, merci, mais ce n'est pas ce que je veux. – blaze