Wie konvertieren von Farben in Graustufen, in java nur mit java.io.*; Bibliothek?
Gut, ich habe diese.. Ursache in meinem Ort, den Sie verlangen es so,.. Nun habe ich dieses:
//einige Variablen und coments sind eine mögliche code.. Aber ich meine, ich weiß nicht, wie es zu tun genau, ich fand im internet, dass zu konvertieren, R ist das byte in *0.21 mit G *0.71 denke ich und blau ist * 0.07. Ich kann einfach die verwenden, die Bibliothek java.io.*; und ich arbeite mit BMP-format Bilder von 1024 x 768, wenn Sie mir helfen können, oder wollen Sie mich, um genauer zu sein bitte sagen Sie mir. ich weiß nicht, ob ich hinzufügen einer anderen Variablen oder zu nehmen, oder zu ändern, bitte helfen Sie mir. Ich bin nicht so neu in dieser Sprache, aber ich bin kein Experte. Der code ist hier:
import java.io.*;
public class Graustufen{
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);
}
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Meisten Bild-Formate header-Informationen, bevor die pixel-Daten, so dass, wenn Sie Lesen, diese Arten von Dateien, müssen Sie Rücksicht nehmen,...
Ehrlich gesagt, ist es viel leichter zu setzen auf einer bereits bestehenden Bibliothek, wo Sie können.
ImageIO
ermöglicht Ihnen das Lesen und schreiben eine Reihe von verschiedenen Datei-Formaten, einschließlich BMP.Werfen Sie einen Blick auf
Die nächste Entscheidung ist - konvertieren Sie das Bild selbst oder einen bereits vorhandenen filter. Sie haben zu tun, einige Ihrer eigenen Metriken, sondern in der Vergangenheit, die ich gefunden habe, pixel manipulation eines Bildes zu langsam sein, langsamer als der eingebaute Filter zumindest...
Original, manuelle Graustufen, automatische/filter Graustufen
Nun, das schreiben der Bild (die nicht oben gezeigt) wäre so einfach wie...
Nun abrufen und jede gett es rot -, blau -, grün-und alpha-Komponente, falls vorhanden, und multiplizieren Sie Sie mit Ihren entsprechenden Faktor.
Für jedes pixel die RGB-Werte, nehmen Sie nur den R-Wert und kopieren Sie es in G und B, So dass jedes pixel enthält den rot-Wert in die 3 RGB-dadurch wird das Bild Grau.
Beispiel.
Daten [0]=123 //rot
Daten [1]=43 //Grün
Daten [2]=78 //blau
Dann
Daten [0]=123
Daten [1]=123
Daten [2]=123