Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > hr.comp.programiranje.java > #10
| From | Chupo <bad_n_mad@yahoo.com> |
|---|---|
| Newsgroups | hr.comp.programiranje, hr.comp.programiranje.java |
| Subject | Citanje color offset-a za svaki pixel u indexed color .bmp file-u? |
| Date | 2017-07-10 05:46 +0200 |
| Organization | Noname d.o.o. |
| Message-ID | <MPG.33cd16eca862579f98af9d@news.t-com.hr> (permalink) |
Cross-posted to 2 groups.
Ukratko:
Da li u Java-i postoji mehanizam za citanje color offset-a za svaki
pojedinacni pixel u indexed color .bmp file-u?
Opsirnije:
Napravio sam generiranje tile i sprite ROM file-ova za Pac-Man hardware
koji kao ulaz uzima 4 bpp (16 color) .bmp file. Pac-Man hardware ima
tile-ove i sprite-ove definirane s 2 bita po pixelu ali s obzirom da ne
postoji 2 bpp .bmp koristim 4 bpp .bmp file u kojem sam definirao samo
prva 4 unosa za paletu.
Problem je jer za citanje boje pixela koristim getRGB() metodu pa sam
boje morao hardkodirati. Kada bih umjesto RGB komponenti za pojedini
pixel mogao procitati offset u color paleti, onda boje ne bi morale
biti hardkodirane pa bi program radio s .bmp file-ovima koji su
nacrtani korisnjem bilo koje 4 boje.
Da li u Java-i postoje neke motode s kojima bi mogo doci do offset-a na
color paletu koji opisuje svaki pixel ili je jedini nacin da citam .bmp
file header i raspakiram pixel array?
Trenutno sam u .bmp file-u na offset-u 0x36 (color paleta) stavio:
00000036h: 00 00 00 00 FF FF FF 00 00 00 FF 00 FF 00 00 00
To su 4 boje, svaka boja je opisana s 4 byte-a u formatu BGRA pa je to:
0x00 crna
0x01 bijela
0x02 plava
0x03 crvena
Ako za crtanje koristim te 4 boje onda mogu na osnovu RGB vrijednosti
pixela odrediti offset u toj paleti, ali ako bi htio koristiti neke
druge 4 boje onda bih morao mijenjati program pa mi zato umjesto
citanja RGB vrijednosti pixela treba citanje offset-a u color paleti.
Program koji radi s hardkodiranim vrijednostima izgleda ovako:
package pacman;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.RandomAccessFile;
import javax.imageio.ImageIO;
// Reads tile.bmp, generates raw output.bin and overwrites the
// first 16 bytes in pacman.5e ROM file with the same 16 bytes
public class Tilegen {
// returns byte describing 4 pixel column at position i
// i = 0 --> down-right, i = 15 --> up-left
public static int get4px(int i, int data[][]) {
int x;
int y;
int out = 0;
x = 7 - (i % 8); // x coord in array
y = 7 - (i / 8)*4; // y coord in array
// bits 0 & 4 (bit 0 and bit 1 shifted to position 4)
out |= (data[x][y] & 0x01) | ((data[x][y] & 0x02) << 3);
// bits 1 & 5 (bit 0 shifted to position 1 and bit 1 shifted to
position 5)
out |= ((data[x][y-1] & 0x01) << 1) | ((data[x][y-1] & 0x02)
<< 4);
// bits 2 & 6 (bit 0 shifted to position 2 and bit 1 shifted to
position 6)
out |= ((data[x][y-2] & 0x01) << 2) | ((data[x][y-2] & 0x02)
<< 5);
// bits 3 & 7 (bit 0 shifted to position 3 and bit 1 shifted to
position 7)
out |= ((data[x][y-3] & 0x01) << 3) | ((data[x][y-3] & 0x02)
<< 6);
return out;
}
public static void main(String[] args) throws IOException {
final File file = new File("tile.bmp"); // 8x8 .bmp
file (4 of 16 colors used)
final BufferedImage image = ImageIO.read(file);
final FileOutputStream outfile = new FileOutputStream
("output.bin"); // output hex file
final File romfile = new File("pacman.5e"); // ROM file
final RandomAccessFile tilerom = new RandomAccessFile(romfile,
"rw");
tilerom.seek(0L);
int data[][] = new int[8][8]; // to store pixel data
int out;
for (int y=0; y < image.getHeight(); y++) {
for (int x=0; x < image.getWidth(); x++) {
final int color = image.getRGB(x, y);
final int red = ((color & 0x00ff0000) >> 16); //
removing ( ) breaks auto indentation in Eclipse!?
final int green = ((color & 0x0000ff00) >> 8); //
removing ( ) breaks auto indentation in Eclipse!?
final int blue = color & 0x000000ff;
if ((red == 0xff) && (green == 0xff) && (blue == 0xff))
{
//System.out.print("1 "); // white is 1
out = 1;
} else if (red == 0xff) {
//System.out.print("3 "); // red is 3
out = 3;
} else if (blue == 0xff) {
//System.out.print("2 "); // blue is 2
out = 2;
} else {
//System.out.print("0 "); // black is 0
out = 0;
}
System.out.print(out + " ");
data[x][y] = out & 0xff;
}
System.out.println();
}
System.out.println();
// map data to ROM file format
for (int i=0; i < 16; i++) {
out = get4px(i, data);
System.out.println(out + " ");
outfile.write(out);
tilerom.write(out); // change byte in the ROM file
}
tilerom.close();
outfile.close();
} // main
} // class
Jos opsirnije:
https://stackoverflow.com/q/44991780/1324175
--
Let There Be Light
Custom LED driveri prema specifikacijama
http://tinyurl.com/customleddriver
Chupo
Back to hr.comp.programiranje.java | Previous | Next — Next in thread | Find similar
Citanje color offset-a za svaki pixel u indexed color .bmp file-u? Chupo <bad_n_mad@yahoo.com> - 2017-07-10 05:46 +0200
Re: Citanje color offset-a za svaki pixel u indexed color .bmp file-u? Bruno Babic <a@b.c> - 2017-07-10 14:16 +0200
Re: Citanje color offset-a za svaki pixel u indexed color .bmp file-u? Chupo <bad_n_mad@yahoo.com> - 2017-07-10 15:18 +0200
Re: Citanje color offset-a za svaki pixel u indexed color .bmp file-u? Bruno Babic <a@b.c> - 2017-07-12 09:32 +0200
Re: Citanje color offset-a za svaki pixel u indexed color .bmp file-u? Chupo <bad_n_mad@yahoo.com> - 2017-07-12 23:08 +0200
Re: Citanje color offset-a za svaki pixel u indexed color .bmp file-u? Bruno Babic <a@b.c> - 2017-07-14 11:25 +0200
Re: Citanje color offset-a za svaki pixel u indexed color .bmp file-u? Bruno Babic <a@b.c> - 2017-07-14 11:27 +0200
Re: Citanje color offset-a za svaki pixel u indexed color .bmp file-u? Chupo <bad_n_mad@yahoo.com> - 2017-07-14 15:09 +0200
Re: Citanje color offset-a za svaki pixel u indexed color .bmp file-u? Bruno Babic <a@b.c> - 2017-07-14 16:22 +0200
Re: Citanje color offset-a za svaki pixel u indexed color .bmp file-u? Chupo <bad_n_mad@yahoo.com> - 2017-07-14 17:21 +0200
Re: Citanje color offset-a za svaki pixel u indexed color .bmp file-u? Bruno Babic <a@b.c> - 2017-07-16 11:37 +0200
Re: Citanje color offset-a za svaki pixel u indexed color .bmp file-u? Chupo <bad_n_mad@yahoo.com> - 2017-07-16 15:20 +0200
Re: Citanje color offset-a za svaki pixel u indexed color .bmp file-u? Bruno Babic <a@b.c> - 2017-07-17 12:36 +0200
Re: Citanje color offset-a za svaki pixel u indexed color .bmp file-u? Chupo <bad_n_mad@yahoo.com> - 2017-07-18 00:37 +0200
Re: Citanje color offset-a za svaki pixel u indexed color .bmp file-u? Bruno Babic <a@b.c> - 2017-07-18 17:23 +0200
Re: Citanje color offset-a za svaki pixel u indexed color .bmp file-u? Chupo <bad_n_mad@yahoo.com> - 2017-07-19 01:10 +0200
Re: Citanje color offset-a za svaki pixel u indexed color .bmp file-u? Bruno Babic <a@b.c> - 2017-07-19 15:14 +0200
Re: Citanje color offset-a za svaki pixel u indexed color .bmp file-u? Chupo <bad_n_mad@yahoo.com> - 2017-07-19 16:21 +0200
Re: Citanje color offset-a za svaki pixel u indexed color .bmp file-u? Nikolaj Lazic <nlazicBEZ_OVOGA@mudrac.ffzg.hr> - 2017-07-19 17:08 +0000
Re: Citanje color offset-a za svaki pixel u indexed color .bmp file-u? Bruno Babic <a@b.c> - 2017-07-20 18:04 +0200
Re: Citanje color offset-a za svaki pixel u indexed color .bmp file-u? Chupo <bad_n_mad@yahoo.com> - 2017-07-20 19:17 +0200
Re: Citanje color offset-a za svaki pixel u indexed color .bmp file-u? Chupo <bad_n_mad@yahoo.com> - 2017-07-20 20:42 +0200
Re: Citanje color offset-a za svaki pixel u indexed color .bmp file-u? Chupo <bad_n_mad@yahoo.com> - 2017-07-21 03:58 +0200
Re: Citanje color offset-a za svaki pixel u indexed color .bmp file-u? Chupo <bad_n_mad@yahoo.com> - 2017-07-21 05:14 +0200
Re: Citanje color offset-a za svaki pixel u indexed color .bmp file-u? Bruno Babic <a@b.c> - 2017-07-21 12:04 +0200
Re: Citanje color offset-a za svaki pixel u indexed color .bmp file-u? Chupo <bad_n_mad@yahoo.com> - 2017-07-21 17:24 +0200
Re: Citanje color offset-a za svaki pixel u indexed color .bmp file-u? Bruno Babic <a@b.c> - 2017-08-04 13:10 +0200
Re: Citanje color offset-a za svaki pixel u indexed color .bmp file-u? Chupo <bad_n_mad@yahoo.com> - 2017-08-04 17:21 +0200
Re: Citanje color offset-a za svaki pixel u indexed color .bmp file-u? Bruno Babic <a@b.c> - 2017-08-07 17:30 +0200
Re: Citanje color offset-a za svaki pixel u indexed color .bmp file-u? Chupo <bad_n_mad@yahoo.com> - 2017-08-07 18:30 +0200
Re: Citanje color offset-a za svaki pixel u indexed color .bmp file-u? Chupo <bad_n_mad@yahoo.com> - 2017-08-07 18:35 +0200
Re: Citanje color offset-a za svaki pixel u indexed color .bmp file-u? Chupo <bad_n_mad@yahoo.com> - 2017-07-16 01:04 +0200
Re: Citanje color offset-a za svaki pixel u indexed color .bmp file-u? Bruno Babic <a@b.c> - 2017-07-16 11:32 +0200
csiph-web