1 inteiro é formado por 4 bytes.
No caso de informações de cor, cada byte carrega um componente da cor. Os componentes podem ser vermelho ®, verde (G) ou azul (B). No caso de imagens com transparência o próximo componente é o alfa (A), mas não creio que seja o seu caso (já que vc multiplicou o tamanho do array por 3, e não 4).
A ordem dos componentes varia entre os diferentes formatos de imagem, não me lembro exatamente onde o Java guarda essa informação. Mas os pixels podem começar pelo vermelho (RGBA), azul (BGRA) ou ter compactação (R5G6B5).
Não sei se o Java já armazena os 4 componentes em um único int, ou se você precisa separar os componentes manualmente, usando máscaras de bits. Se ele carregar os 4 componentes em um só int, não será necessário criar um array de tamanho multiplicado por 3 para ler os ints (ou 4, no caso de ter alpha), como você fez. Aí vc terá que usar máscaras de bits para separar cada um dos componentes, para grava-lo em único byte. O array de bytes sim, terá o tamanho multiplicado pelo número de componentes. Por exemplo:
byte bytePixels[] = new byte[pixels.length*3];
for (int i = 0; i < pixels.length; i+=3) {
bytePixel[i] = (byte)(pixels[i] & 0xFF) //num RGB seria o B;
bytePixel[i+1] = (byte)((pixels[i] & 0xFF00) >> 8) //num RGB seria o G;
bytePixel[i+2] = (byte)((pixels[i] & 0xFF0000) >> 16) //num RGB seria o R;
}
Se cada componente já vier separado, aí é só uma questão de fazer um downcast:
byte bytePixels[] = new byte[pixels.length];
for (int i = 0; i < pixels.length; i++) {
bytePixel[i] = (byte)pixels[i];
}
Recentemente, fiz um artigo sobre texturas em OpenGL, que mostra como a SDL trata esse assunto:
http://vinigodoy.wordpress.com/2008/08/11/carregando-imagens-com-a-sdl/
A SDL suporta inclusive formatos com compactação. Não creio que o Java seja diferente, você terá que pesquisar um pouco mais sobre onde o Java armazena a informação de quantos bits estão sendo usados para armazenar cada componente.
Claro, se o formato da imagem for conhecido, você não precisará tratar todos esses detalhes em código. Mas é bom saber que eles existem.