Jak konwertować kolory do skali szarości w java za pomocą tylko java.io. *; biblioteka?

Cóż, mam to ... bo w moim miejscu proszą o to w ten sposób .. Cóż, mam to: // niektóre zmienne i komentarze są możliwym kodem .. Ale mam na myśli, że nie wiem jak to zrobić dokładnie znalezione w Internecie, że konwersja R to bajt w * 0.21 z G jest * 0.71, a niebieski jest * 0.07. Po prostu mogę użyć tej biblioteki java.io. *; i pracuję z obrazami w formacie BMP 1024 x 768, jeśli możesz mi pomóc, albo chcesz, żebym był bardziej szczegółowy, powiedz mi. nie wiem, czy muszę dodawać kolejne zmienne, czy też wyprowadzać je lub modyfikować, proszę mi pomóc. Nie jestem taki nowy w tym języku, ale nie jestem ekspertem. Kod jest tutaj:

import java.io. *;

klasa publiczna Grayscale {

FileInputStream image;
FileOutputStream img;
byte[] datos;
int i;
int cont;

public Grayscale(String nombre)throws Exception{

    this.image = new FileInputStream(nombre);
    this.img = img;
    this.datos = new byte[image.available()];
    this.i = 54;
    this.cont = 1;
}

public void gray()throws Exception{

    image.read(datos);
    img = new FileOutputStream("grayscale.bmp");

    while(i<datos.length){
        if(cont == 1){
            datos[i] = datos[i] ;//* 0.21;
            cont++;
        } else if(cont == 2){
            datos[i] = datos [i] ;//* 0.71;
            cont++;
        } else if(cont == 3){
            datos[i] = datos[i] ;//* 0.07;
            cont++;
        }else{
            cont = 1;
        }
        i++;
    }
    img.write(datos);
}

}

questionAnswers(3)

yourAnswerToTheQuestion