Ich weiß, dass es ähnliche Fragen zu diesem, aber diejenigen, die meine Frage nicht beantworten. Wie der Titel liest, verwende ich JavaFX Image Klasse, nicht gepuffertImage.javafx argb zu Graustufen Umwandlung
Ich habe die Antwort auf this andere Frage verwendet, aber das resultierende Bild ist leer.
Dies ist mein 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;
}
kann mir jemand sagen, was das Problem ist.
Scheint wie ein Duplikat von [Wie in JavaFX Farbe des Bildes ändern] (http://stackoverflow.com/questions/18124364/how-to-change-color-of-image -in-javafx)? – jewelsea
Sie verpassen eine Klammer, um Ihre innere for-Schleife zu schließen. – ManoDestra
@jewelsea, danke, aber das will ich nicht. – blaze