32-битный int позволяет хранить точное значение цвета в 24-битной палитре (это как раз R+G+B) плюс 255 градаций прозрачности. Соответственно, картинку допустимо хранить в одномерном массиве int, заведя дополнительную переменную для хранения ширины картинки (чтобы знать на какой точке выполнять "перенос строк"). Выделение отдельных каналов - это обычная работа с байтами (см. сдвиг байт), а наложение эффектов - вообще, тема для отдельного разговора ).
Помимо этого, Java предлагает класс java.awt.Color, упрощающий работу с цветом.