Изменение цвета изображения PNG в Java - PullRequest
0 голосов
/ 25 февраля 2019

Мне нужно изменить цвет изображения PNG автомобиля, когда оно падает на блок, как своего рода фильтр, вот 2 класса

public class Sprite {       
        //classe estendibile a tutti gli oggetti

    protected int x;
    protected int y;
    protected int width;
    protected int height;
    protected boolean visible;
    protected Image image;

    public Sprite(int x, int y) {

        this.x = x;
        this.y = y;
        visible = true;
    }

    protected void getImageDimensions() {

        width = image.getWidth(null);
        height = image.getHeight(null);
    }

    protected void loadImage(String imageName) {

        ImageIcon ii = new ImageIcon(imageName);
        image = ii.getImage();
    }

    public Image getImage() {
        return image;
    public Rectangle getBounds() {
        return new Rectangle(x, y, width, 
    height);
    }
    }`
    public class Car extends Sprite {

    public Car(int x, int y) {
        super(x, y);
        loadImage("src/car.png");
        getImageDimensions();

    }

1 Ответ

0 голосов
/ 25 февраля 2019

Ну, я полагаю, это зависит от картины.Если ваша картинка выглядит следующим образом

enter image description here

Я полагаю, что идет пиксель за пикселем и использует image.setRGB(x, y, newColour) для пикселей, которые удовлетворяют условию image.getRGB(x, y) == colourToChangeбуду работать.Если вы хотите обработать картинку типа

enter image description here

, вам, вероятно, сначала нужно будет запустить алгоритм распознавания, чтобы выяснить, какие пиксели на самом деле принадлежат автомобилю, икоторые являются фоном (колеса, тени и т. д.), а затем запустить фильтр над ними.Хотя в этот раз на основе RGB исходного пикселя вам нужно будет рассчитать новый цвет так, чтобы то, что было первоначально темным, оставалось темным, а то, что изначально было светлым, оставалось светлым и так далее.

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