If you use BufferedImage, you really should consider using the raster data instead. (It's much faster than setting and getting single RGB values).
DataBufferInt dbuffer = (DataBufferInt)(((WritableRaster)image.getRaster()).getDataBuffer());int[] imageData = dbuffer.getData();
This gives you the int array imageData which is imageWidth*imageHeight in length. For bitmask images, the alpha value is either 0 or 1 (translucency is inbetween). 1 is opaque, 0 is transparent. Now, color mapping is I won't go into here, but to make a pixel transparent in imageData, simply imageData=0;
does the trick.
The big advantage with image.getRaster() is that the int array is directly mapped to the image (actual array, no copy). So any changes to the array, is reflected on the image itself. if you want an array like imageData, but not changes to it to reflect the image directly, use image.getData() (the same as getRaster() except this is a copy).
If you do not plan to mix and mess with colors at all, you can substitute the image.getRaster() with image.getAlphaRaster(). Note that not all ColorModel's support the alpha raster, so it will sometimes return null (the API is really self-explanatory).
It's just as well to learn how to use the raster right now, and learn it well. Once you understand it, it will make alot of stuff easiar for you.