import java.io.*;
public class ReadRawImage {
private byte[] all;
/*
* Channel[0] for red channel, Channel[1] for green channel, Channel[2]
* for blue channel
*/
private int[][][] Channel;
private FileInputStream stream = null;
public ReadRawImage(File raw_image, int width, int height) {
try {
/* Read the raw image file into memory */
stream = new FileInputStream(raw_image);
all = new byte[width * height * 3];
Channel = new int[3][][];
stream.read(all);
/* dispatch pixel values to each array of channel */
ByteArrayInputStream bytestream = new ByteArrayInputStream(all);
byte [] temp = new byte[width * height];
bytestream.read(temp, 0, width * height);
Channel[0] = new int[height][width];
for(int i = 0; i < width * height; i++) {
/*
* extends the byte value to integer value by
* performing the "and" operation with 0x000000ff
*/
Channel[0][i / width][i%width] = temp[i] & 0x000000ff;
}
bytestream.read(temp, 0, width * height);
Channel[1] = new int[height][width];
for(int i = 0; i < width * height; i++) {
Channel[1][i / width][i%width] = temp[i] & 0x000000ff;
}
bytestream.read(temp, 0, width * height);
Channel[2] = new int[height][width];
for(int i = 0; i < width * height; i++) {
Channel[2][i / width][i%width] = temp[i] & 0x000000ff;
}
}catch(Exception e) {
e.printStackTrace();
}
}
public int[][][] getRGBValue() {
return Channel;
}
}
2005年9月13日 星期二
[Java] Read RGB values from raw image file
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言