Jak zmenić barwe obrazka na czerwona?

0

Witam chciałbym przed wyswietleniem obrazka zmienic jego barwe na czerwona. Czyli ze wartosc red modelu RGB kazdego piksela zwiekszy sie. Jak tego dokonac? Czy mozna to zrobic przy uzyciu jakiegos filtra dla BufferedImage?

1

Przejedź pętlą po każdym pikselu i zwiększ red, lub obniż pozostałe GB.
Szybciej napiszesz te parę linijek niż się gotowego rozwiązania naszukasz.

0

Dobra z kolorem sobie poradziłem teraz mam inny problem. W chwili zniszczenia statku tworze tablice z jego pikseli, kazdemu nadaje inny kierunek i puszczam je zeby tak leciały (odpowiada za to metoda niezwiazana z moim problemem). Kazdy piksel to w rzeczywistosci obiekt. W metodzie repaint() pobieram pole image kazdego piksela (image ma typ Image) i rysuje obrazek uzywajac metody drawImage() z klasy Graphics2D. Kod wyglada tak:

//Utworzenie tablicy pikseli
        List<Pixel> pixels = new LinkedList<>();
        BufferedImage buff = (BufferedImage)image;
        for (int px = 0; px < buff.getWidth(); px++) {
            for (int py = 0; py < buff.getHeight(); py++) {
                int rgb = buff.getRGB(px, py);
                int red = (rgb & 0x00ff0000) >> 16;
                int green = (rgb & 0x0000ff00) >> 8;
                int blue = rgb & 0x000000ff;
                int alpha = (rgb >> 24) & 0xff;
                if (alpha == 255) {
                    pixels.add(new Pixel(px, py, 1 - (float)(Math.random()*2),
                            1 - (float)(Math.random()*2), red, green, blue));
                }
            }
        }
//Konstruktor klasy Pixel
Pixel(float x, float y, float speedX, float speedY, int red, int green, int blue) {
        super(x, y, speedX, speedY);
        BufferedImage buff = new BufferedImage(1, 1, BufferedImage.TYPE_INT_ARGB);
        WritableRaster raster = buff.getRaster();
        //wyglada na to ze do tego momentu wszystko jest ok wiec blad musi byc w jednej z 2 ponizszych linijek!!!
        raster.setPixel(0, 0, new int[]{red, blue, green, 255});
        image = buff;
}

Wszystko działa za wyjatkiem, ze wszystkie piksele sa w FIOLETOWEJ barwie. Ogólnie odcien sie zgadza, ale kazdy piksel ma fioletowa barwe. Czemu tak sie dzieje? Analizuje moj kod i nigdzie sie nie moge doszukac bledu. Wszystko powinno działac dobrze nie wiem skad sie wział fioletowy kolor.

0

Eheheh juz wiem gdzie jest blad. Stworzyłem swoj własny model RBG (przedostatnia linijka w konstruktorze piksela). :P Rozstrzepanie, mozna zamknac

1 użytkowników online, w tym zalogowanych: 0, gości: 1