4nd*_*o1d 18 java png transparency image colors
我正在尝试自动更改一组图标的颜色.每个图标都有一个白色填充图层,另一个图标是透明的.这是一个例子:(在这种情况下它是绿色的,只是为了让它可见)

我试着做以下事情:
private static BufferedImage colorImage(BufferedImage image) {
int width = image.getWidth();
int height = image.getHeight();
for (int xx = 0; xx < width; xx++) {
for (int yy = 0; yy < height; yy++) {
Color originalColor = new Color(image.getRGB(xx, yy));
System.out.println(xx + "|" + yy + " color: " + originalColor.toString() + "alpha: "
+ originalColor.getAlpha());
if (originalColor.equals(Color.WHITE) && originalColor.getAlpha() == 255) {
image.setRGB(xx, yy, Color.BLUE.getRGB());
}
}
}
return image;
}
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是我得到的每个像素都具有相同的值:
32|18 color: java.awt.Color[r=255,g=255,b=255]alpha: 255
Run Code Online (Sandbox Code Playgroud)
所以我的结果只是一个彩色的方块.如何才能实现仅更改非透明部件的颜色?为什么所有像素都具有相同的alpha值?我猜这是我的主要问题:没有正确读取alpha值.
Mad*_*mer 19
为什么它不起作用,我不知道,这会.
这会将所有像素变为蓝色,保持其alpha值...

import java.awt.image.BufferedImage;
import java.awt.image.WritableRaster;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class TestColorReplace {
public static void main(String[] args) {
try {
BufferedImage img = colorImage(ImageIO.read(new File("NWvnS.png")));
ImageIO.write(img, "png", new File("Test.png"));
} catch (IOException ex) {
ex.printStackTrace();
}
}
private static BufferedImage colorImage(BufferedImage image) {
int width = image.getWidth();
int height = image.getHeight();
WritableRaster raster = image.getRaster();
for (int xx = 0; xx < width; xx++) {
for (int yy = 0; yy < height; yy++) {
int[] pixels = raster.getPixel(xx, yy, (int[]) null);
pixels[0] = 0;
pixels[1] = 0;
pixels[2] = 255;
raster.setPixel(xx, yy, pixels);
}
}
return image;
}
}
Run Code Online (Sandbox Code Playgroud)
4nd*_*o1d 14
问题是,那
Color originalColor = new Color(image.getRGB(xx, yy));
Run Code Online (Sandbox Code Playgroud)
丢弃所有的alpha值.相反,你必须使用
Color originalColor = new Color(image.getRGB(xx, yy), true);
Run Code Online (Sandbox Code Playgroud)
保持alpha值可用.
| 归档时间: |
|
| 查看次数: |
15557 次 |
| 最近记录: |