2

まあ、私はこれを手に入れました..彼らは私の場所でそれをそのように要求します..まあ、私はこれを持っています://いくつかの変数とコメントは可能なコードです..しかし、私はそれを正確に行う方法がわからないことを意味します. Rを変換するバイトは* 0.21で、Gは* 0.71で、青は* 0.07であることがインターネットで見つかりました。そのライブラリ java.io.*; を使用できます。私は 1024 x 768 の BMP 形式の画像を扱っています。助けていただける場合、またはより具体的に教えてほしい場合は教えてください。別の変数を追加する必要があるのか​​、一部を削除する必要があるのか​​、変更する必要があるのか​​ わかりません。助けてください。私はこの言語の初心者ではありませんが、専門家ではありません。コードはここにあります:

java.io.* をインポートします。

パブリッククラスグレースケール{

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);
}

}

4

3 に答える 3

2
// constant factors
            final double GS_RED   = 0.299;
            final double GS_GREEN = 0.587;
            final double GS_BLUE  = 0.114;

次に、それぞれを取得し、存在する場合は赤、青、緑のコンポーネントとアルファを取得し、それらに対応する係数を掛けます。

R = G = B = (int)(GS_RED * R + GS_GREEN * G + GS_BLUE * B);
于 2013-09-10T04:17:22.447 に答える
-2

RGB 値を持つ各ピクセルについて、R 値のみを取得し、それを G と B にコピーします。各ピクセルに 3 つの RGB の赤の値が含まれるようにすると、画像がグレーになります。例。data [0]=123 //red data [1]=43 //Green data [2]=78 //blue 次に data [0]=123 data [1]=123 data [2]=123

于 2013-09-10T04:26:33.063 に答える