【发布时间】:2014-03-21 15:42:57
【问题描述】:
我需要在不影响透明度本身的情况下将色调应用于具有透明度的灰度 BufferedImage,这是我使用的方法,但是当我尝试在画布内的另一个图像上绘制它时,原始图像的透明度不见了,留下一个原始选定颜色的正方形......
private BufferedImage colorize(BufferedImage original,Color tint) { //TODO fix!!!
BufferedImage img = new BufferedImage(original.getWidth(), original.getHeight(),BufferedImage.TYPE_4BYTE_ABGR);
int redVal=tint.getRed();
int greenVal=tint.getGreen();
int blueVal=tint.getBlue();
for (int x=0;x<original.getWidth();x++) for (int y=0;y<original.getHeight();y++) {
Color pixelVal=new Color(original.getRGB(x, y));
int grayValue=pixelVal.getRed(); //Any basic color works the same
int alpha=pixelVal.getAlpha();
int newRed= (redVal*(grayValue))/255;
int newGreen= (greenVal*grayValue)/255;
int newBlue= (blueVal*grayValue)/255;
img.setRGB(x, y, new Color(newRed,newGreen,newBlue,alpha).getRGB());
}
return img;}
有什么提示吗?
【问题讨论】:
标签: java colors bufferedimage alpha