對於阿爾法均勻的圖像,你可以做到以下幾點:
BufferedImage bim=null;
try {
bim=ImageIO.read(new File("..."));
}
catch (Exception ex) { System.err.println("error in bim "+ex); }
int wc=bim.getWidth(), hc=bim.getHeight();
BufferedImage b=new BufferedImage(wc, hc, BufferedImage.TYPE_INT_ARGB);
b.getGraphics().drawImage(bim, 0, 0, null);
BufferedImage b2=new BufferedImage(wc, hc, BufferedImage.TYPE_INT_ARGB);
RescaleOp no=new RescaleOp(new float[]{1f, 1, 1, 1f}, new float[]{0, 0, 0, -50}, null);
b2=no.filter(b, null);
BufferedImage b3=new BufferedImage(wc, hc, BufferedImage.TYPE_INT_ARGB);
b3.getGraphics().drawImage(bim, 0, 0, null);
float offset=(b2.getRGB(0, 0)&0xff000000)>>24, a=(b3.getRGB(0, 0)&0xff000000)>>24;
no=new RescaleOp(new float[]{1, 1, 1, 1}, new float[]{0, 0, 0, -a+offset}, null);
b3=no.filter(b3, null);
現在B3具有B2的阿爾法。
對於具有非均勻alpha的圖像,您必須每像素工作像素。
看看類似的帖子,就像[這一個](http://stackoverflow.com/questions/660580/change-the-alpha-value-of-a-bufferedimage)。 –