Я пытаюсь напечатать шестнадцатеричную строку в виде двоичных байтов в растровое изображение (по порядку), например: a6c832bac v 1010 v FFFFFF000000FFFFFF000000 (b, g, r) в пиксельном массиве.
проблема, я быПредположим, что с «отступом» я могу жить, просто распечатав это в массив пикселей, но, как и следовало ожидать, изображение должно быть черно-белым, но есть смещение, и мое изображение многоцветное...
Я попытался поискать, и я попытался возиться с последовательностью. Я новичок в Java, так что я не знаю, есть ли что-то, что мне не хватает. Я действительно не могу понять
Это код заголовка, где я инициализирую размер отступа, и после этого записываю информацию заголовка в файл, что, я знаю, правильно, потому что все программы просмотра изображений могут загрузитьмое растровое изображение.
int headers[] = new int[13];
int WIDTH = (int)Math.sqrt(hexstring.length()*4) + 1;
int HEIGHT = WIDTH;
int extrabytes, paddedsize, offset;
int bit = 0;
extrabytes = 4 - ((WIDTH * 3) % 4);
if(extrabytes == 4) extrabytes = 0;
paddedsize = ((WIDTH * 3) + extrabytes) * HEIGHT;
Это код рисования массива пикселей.
int z = 0;
int x = 0;
for (int yy = HEIGHT - 1; yy >= 0; yy--) { // BMP PIXEL ARRAY, Bottom -> Top, Left -> Right
for (int xx = 0; xx <= WIDTH - 1; xx++) {
if(z < hexstring.length()){ // print valuable chars
String bit_string = String.format("%4s", Integer.toBinaryString(Integer.parseInt(Character.toString(hexstring.charAt(z)), 16))).replace(" ", "0");
byte[] bits = bit_string.getBytes();
System.out.println("BIT STRING: " + bit_string);
for(int w = 0; w < 4; w++){
bit = (bits[w]-48)*0xFF;
System.out.println(bit);
outfile.write(bit);
outfile.write(bit);
outfile.write(bit);
}
z++;
} else { //print eot
outfile.write(128);
outfile.write(128);
outfile.write(128);
}
}
if (extrabytes != 0) {
for (int nnn = 1; nnn <= extrabytes; nnn++)
{
System.out.println("PADDING");
outfile.write(0); // can be any value
}
}
}
Я не знаю, как включить изображения, но я могу предоставить свое целевое исследование?
BIT STRING: 0110
0
255
255
0
BIT STRING: 1000
255
0
0
0
BIT STRING: 1000
255
0
0
0
BIT STRING: 1011
255
0
255
255
BIT STRING: 0011
0
0
255
255
BIT STRING: 1010
255
0
255
0
BIT STRING: 1111
255
255
255
255
BIT STRING: 1001
255
0
0
255
BIT STRING: 0011
0
0
255
255
BIT STRING: 1011
255
0
255
255
BIT STRING: 1110
255
255
255
0
BIT STRING: 0001
0
0
0
255
BIT STRING: 1010
255
0
255
0
BIT STRING: 1110
255
255
255
0
BIT STRING: 0100
0
255
0
0
BIT STRING: 0010
0
0
255
0
BIT STRING: 1110
255
255
255
0
BIT STRING: 0010
0
0
255
0
PADDING
PADDING
BIT STRING: 1000
255
0
0
0
BIT STRING: 1111
255
255
255
255
BIT STRING: 0100
0
255
0
0
BIT STRING: 0010
0
0
255
0
BIT STRING: 1111
255
255
255
255
BIT STRING: 0011
0
0
255
255
BIT STRING: 1100
255
255
0
0
BIT STRING: 0110
0
255
255
0
BIT STRING: 1101
255
255
0
255
BIT STRING: 1101
255
255
0
255
BIT STRING: 0001
0
0
0
255
BIT STRING: 1000
255
0
0
0
BIT STRING: 1101
255
255
0
255
BIT STRING: 0010
0
0
255
0
BIT STRING: 1000
255
0
0
0
BIT STRING: 0010
0
0
255
0
BIT STRING: 0111
0
255
255
255
BIT STRING: 1010
255
0
255
0
PADDING
PADDING
BIT STRING: 0010
0
0
255
0
BIT STRING: 0001
0
0
0
255
BIT STRING: 1010
255
0
255
0
BIT STRING: 1010
255
0
255
0
BIT STRING: 1010
255
0
255
0
BIT STRING: 0111
0
255
255
255
BIT STRING: 1000
255
0
0
0
BIT STRING: 0000
0
0
0
0
BIT STRING: 0110
0
255
255
0
BIT STRING: 0110
0
255
255
0
BIT STRING: 0110
0
255
255
0
BIT STRING: 1000
255
0
0
0
BIT STRING: 1111
255
255
255
255
BIT STRING: 0000
0
0
0
0
BIT STRING: 1010
255
0
255
0
BIT STRING: 0101
0
255
0
255
BIT STRING: 1110
255
255
255
0
BIT STRING: 0010
0
0
255
0
PADDING
PADDING
BIT STRING: 1010
255
0
255
0
BIT STRING: 1000
255
0
0
0
BIT STRING: 1100
255
255
0
0
BIT STRING: 0111
0
255
255
255
BIT STRING: 1100
255
255
0
0
BIT STRING: 1100
255
255
0
0
BIT STRING: 1010
255
0
255
0
BIT STRING: 0011
0
0
255
255
BIT STRING: 0101
0
255
0
255
BIT STRING: 0111
0
255
255
255
BIT STRING: 1110
255
255
255
0
BIT STRING: 0010
0
0
255
0
BIT STRING: 0000
0
0
0
0
BIT STRING: 1000
255
0
0
0
BIT STRING: 0001
0
0
0
255
BIT STRING: 1001
255
0
0
255
BIT STRING: 1000
255
0
0
0
BIT STRING: 0001
0
0
0
255
PADDING
PADDING
BIT STRING: 1111
255
255
255
255
BIT STRING: 0111
0
255
255
255
BIT STRING: 0001
0
0
0
255
BIT STRING: 0100
0
255
0
0
BIT STRING: 0001
0
0
0
255
BIT STRING: 0011
0
0
255
255
PADDING
PADDING
PADDING
PADDING
PADDING
PADDING
PADDING
PADDING
PADDING
PADDING
PADDING
PADDING
PADDING
PADDING
PADDING
PADDING
PADDING
PADDING
PADDING
PADDING
PADDING
PADDING
PADDING
PADDING
PADDING
PADDING
PADDING
PADDING
EXTRA BYTES = 2
78 characters printed out of 78