Wpis z mikrobloga

Mam pewien problem z #java. Dopiero zaczynam programować, więc wiele rzeczy nie rozumiem. Chciałem napisać program wczytujący jednobitową bitmapę o zadanej rozdzielczości (wcześniej utworzoną w PS) jako macierz - np. 0 -> czerń, 1-> biel, a potem przechodząc pętlą po wszystkich komórkach macierzy podmieniać je z losowo wybranymi innymi komórkami, tak by powstał nowy obraz. Następnie zapisać go jako mapę bitową *.bmp. Jakieś hinty? Ciężko mi to znaleźć w internetach, więc zwracam się o pomoc do #programowanie.
  • 10
  • Odpowiedz
znalazłem taki kod:

BufferedImage in = ImageIO.read(new File("nazwa pliku");
int w = in.getWidth(), h = in.getHeight();
int[][] array = new int[w][h];
for (int j = 0; j < w; j++) {
for (int k = 0; k < h; k++) { // to jest spoko i rozumiem
array[j][k] = in.getRGB(j, k); // tu jest rgb, a ja potrzebuję bitów 1 i 0. Jak to zmienić?
}
}

// perform operations on array[
  • Odpowiedz
// tu jest rgb, a ja potrzebuję bitów 1 i 0. Jak to zmienić?


@amazingmeister: może ja czegoś nie wiem, ale da się zapisać obraz w formacie "1 bitowym"? W sensie, że czerń to jest 1, a biały to 0, a nie, że czarny to (0,0,0), a biały (255,255,255)? Na mój gust to musisz sprawdzić, czy dany piksel jest czarny, czy biały, a nie czy jest 1, czy 0.
  • Odpowiedz
@Eoghan: oczywiście że się da, z tym że api zazwyczaj dla ułatwienia i tak będzie to pokazywać jako rgb, ale pod spodem może być 1 i 0, Java też ma chyba od tego flagi w buffered image czy innej klasie
  • Odpowiedz