You can do pixel manipulation if you are using BufferedImages. You can load your image using ImageIO and that will give you a BufferedImage to start with. Once you have the BufferedImage you can use getRGB to get the pixel which is an int, you can manipulate the int directlly using binary masking or shifts. You can also make a Color out of the int and separate the colors then using getRed, getBlue, getGreen, getAlpha.