Как сделать Pixelize изображение с помощью JavaFX? - PullRequest
0 голосов
/ 12 марта 2020

Я хочу пикселизировать изображение с помощью JavaFx. Моя проблема в том, что у меня только один письменный пиксель в конце, так что он работает только один раз.

Я попробовал

Вот мой код:

Image img = imgView.getImage();
        PixelReader pixelReader = img.getPixelReader();

        WritableImage wImage = new WritableImage(
                (int) img.getWidth(),
                (int) img.getHeight());

        PixelWriter pixelWriter = wImage.getPixelWriter();


        for (int y = 1; y < img.getHeight(); y += 3) {
            for (int x = 1; x < img.getWidth(); x += 3) {
                Color px = pixelReader.getColor(x, y);


                float red = (float) px.getRed();
                float green = (float) px.getGreen();
                float blue = (float) px.getBlue();

                Color all = new Color(red / 3, green / 3, blue / 3, 1);


                for (int u = 0; u <= 3; u++) {
                    for (int i = 0; i <= 3; i++) {
                        pixelWriter.setColor(u, i, all);
                    }
                }


            }

        }

1 Ответ

1 голос
/ 12 марта 2020

Просто проверьте часть, в которой вы устанавливаете цвет:

                for (int u = 0; u <= 3; u++) {
                    for (int i = 0; i <= 3; i++) {
                        pixelWriter.setColor(u, i, all);
                    }
                }

Как видите, вы всегда устанавливаете цвет пикселя в (0,0) - (3,3). Вам нужно использовать

                     pixelWriter.setColor(x + u, y + i, all);

Однако вы должны быть уверены, что не будете пытаться установить цвет некоторых пикселей вне изображения. Проверьте границы циклов по x, y, u и i.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...