これに似た質問がありますが、私の質問には答えられないことが分かります。タイトルが読んでいるうちに、私はJavaFX Imageクラスを使用していますが、bufferedImageは使用していません。javafx argbからグレースケール変換へ
私はthisの答えを使用しましたが、結果の画像は空です。
これは私のコードです:
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;
}
誰もが、問題が何であるかを私に伝えることができます。
http://stackoverflow.com/questions/18124364/how-to-change-color-of-image([JavaFXの画像の色を変更する方法]の重複するように思えます-in-javafx)? – jewelsea
内側のforループを閉じるためのブラケットがありません。 – ManoDestra
@jewelsea、ありがとう、しかし、それは私が欲しいものではありません。 – blaze