I seem to be having an issue where I create a BufferedImage which has transparent pixels like this:
BufferedImage buff = new BufferedImage(i.getWidth(null), i.getHeight(null), BufferedImage.TYPE_INT_ARGB);
and it works fine until I filter it through the RescaleOp to darken it. When I do this, the image disappears. Here is my complete code just so you can see how I am setting this up:
BufferedImage buff = new BufferedImage(i.getWidth(null), i.getHeight(null), BufferedImage.TYPE_INT_ARGB);
Graphics2D g = buff.createGraphics();
g.drawImage(i, 0, 0, null);
g.dispose();
RescaleOp filter = new RescaleOp(lightlevel, 0f, null);
buff = filter.filter(buff, null);
My question is, how do I fix this so the buffered image will have its pixels darkened without affecting the transparency?
You could try the
RescaleOp
that handles alpha, illustrated here, and use the samelightLevel
for all color components.