Как преобразовать цвета в оттенки серого в Java только с помощью java.io. *; библиотека?

Ну, я получил это .. потому что на моем месте они просят это так ... Ну, у меня есть это: // некоторые переменные и комментарии являются возможным кодом .. Но я имею в виду, я не знаю, как это сделать точно, я в интернете обнаружил, что для преобразования R байт находится в * 0,21, где G равен * 0,71, а синий - * 0,07. Я просто могу использовать эту библиотеку java.io. *; и я работаю с изображениями в формате BMP 1024 x 768, если вы можете мне помочь, или вы хотите, чтобы я был более конкретным, скажите мне. я не знаю, нужно ли мне добавить другие переменные или вынуть их, или изменить, пожалуйста, помогите мне. Я не настолько новичок в этом языке, но я не эксперт. Код прямо здесь:

импорт java.io. *;

публичный класс 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);
}

}