2 回答
TA贡献1853条经验 获得超6个赞
我认为,您的“int unpacking”代码可能是错误的。
我使用了(pixel >> 24) & 0xff(pixel特定像素的 rgba 值在哪里)并且效果很好。
我将其与 的结果进行了比较,结果显示java.awt.Color效果很好。
我直接从 中“窃取”了“提取”代码java.awt.Color,这是另一个原因,我倾向于不以这种方式执行这些操作,很容易把它们搞砸
还有我很棒的测试代码...
BufferedImage image = ImageIO.read(new File("BYO image"));
int width = image.getWidth();
int height = image.getHeight();
for (int y = 0; y < height; y++) {
for (int x = 0; x < width; x++) {
int pixel = image.getRGB(x, y);
//value = 0xff000000 | rgba;
int a = (pixel >> 24) & 0xff;
Color color = new Color(pixel, true);
System.out.println(x + "x" + y + " = " + color.getAlpha() + "; " + a);
}
}
注意:在有人说这是低效之前,我不是为了效率,我是为了快速写作
您可能还想看看如何在 Java 中将 get.rgb(x,y) 整数像素转换为 Color(r,g,b,a)?,我也用它来验证我的结果
添加回答
举报