Java Can';无法从单个缓冲区图像像素中获取正确的alpha值
我需要获得RGBA值,修改RGB,然后再次设置RGB(和A)值 然而,对于所有像素,它似乎返回Java Can';无法从单个缓冲区图像像素中获取正确的alpha值,java,image,swing,alpha,Java,Image,Swing,Alpha,我需要获得RGBA值,修改RGB,然后再次设置RGB(和A)值 然而,对于所有像素,它似乎返回255,即使我知道我正在加载的图像中有透明像素 这是一个SSCCE import javax.imageio.ImageIO; import java.awt.*; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; public class TestImage { pub
255
,即使我知道我正在加载的图像中有透明像素
这是一个SSCCE
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
public class TestImage {
public static void main(String args[]) {
try {
BufferedImage image = ImageIO.read(new File("/home/affy/Pictures/salamenceavatar.png"));
BufferedImage buff = new BufferedImage(
image.getWidth(),
image.getHeight(),
BufferedImage.TYPE_INT_ARGB
);
Graphics2D g = buff.createGraphics();
g.drawImage(image, 0, 0, null);
for(int x = 0; x < image.getWidth(); x++) {
for(int y = 0; y < image.getHeight(); y++) {
Color c = new Color(buff.getRGB(x, y));
int alpha = c.getAlpha();
System.out.println(alpha);
}
}
}catch (IOException e) {
e.printStackTrace();
}
}
}
导入javax.imageio.imageio;
导入java.awt.*;
导入java.awt.image.buffereImage;
导入java.io.File;
导入java.io.IOException;
公共类测试图像{
公共静态void main(字符串参数[]){
试一试{
BuffereImage image=ImageIO.read(新文件(“/home/affy/Pictures/salamenceavatar.png”);
BuffereImage buff=新的BuffereImage(
image.getWidth(),
image.getHeight(),
BuffereImage.TYPE_INT_ARGB
);
Graphics2D g=buff.createGraphics();
g、 drawImage(image,0,0,null);
对于(int x=0;x
改为使用,传递它true
告诉它您想从提供的压缩int
Color c = new Color(buff.getRGB(x, y), true);
从JavaDocs
使用指定的组合RGBA值创建sRGB颜色
由位24-31中的alpha分量组成,位24-31中的红色分量
位16-23、位8-15中的绿色分量和蓝色分量
以0-7位为单位。如果hasalpha参数为false,则alpha默认为
255. 参数:
rgba-组合的rgba组件
如果alpha位有效,则hasalpha-true;假的 否则 改为使用,传递它
true
,告诉它您想从提供的压缩int
Color c = new Color(buff.getRGB(x, y), true);
从JavaDocs
使用指定的组合RGBA值创建sRGB颜色
由位24-31中的alpha分量组成,位24-31中的红色分量
位16-23、位8-15中的绿色分量和蓝色分量
以0-7位为单位。如果hasalpha参数为false,则alpha默认为
255. 参数:
rgba-组合的rgba组件
如果alpha位有效,则hasalpha-true;假的 否则 改为使用,传递它
true
,告诉它您想从提供的压缩int
Color c = new Color(buff.getRGB(x, y), true);
从JavaDocs
使用指定的组合RGBA值创建sRGB颜色
由位24-31中的alpha分量组成,位24-31中的红色分量
位16-23、位8-15中的绿色分量和蓝色分量
以0-7位为单位。如果hasalpha参数为false,则alpha默认为
255. 参数:
rgba-组合的rgba组件
如果alpha位有效,则hasalpha-true;假的 否则 改为使用,传递它
true
,告诉它您想从提供的压缩int
Color c = new Color(buff.getRGB(x, y), true);
从JavaDocs
使用指定的组合RGBA值创建sRGB颜色
由位24-31中的alpha分量组成,位24-31中的红色分量
位16-23、位8-15中的绿色分量和蓝色分量
以0-7位为单位。如果hasalpha参数为false,则alpha默认为
255. 参数:
rgba-组合的rgba组件
如果alpha位有效,则hasalpha-true;假的 否则
我认为您需要让我们知道您看到的错误消息、异常或错误行为。“我不能”通常是不够的信息。我认为您需要让我们知道您看到的错误消息、异常或错误行为。“我不能”通常是不够的信息。我认为您需要让我们知道您看到的错误消息、异常或错误行为。“我不能”通常是不够的信息。我认为您需要让我们知道您看到的错误消息、异常或错误行为。“我不能”通常是不够的信息。我相信我试过了,我想我把它搞砸了,现在它起作用了。谢谢我想我试过了,我想我把它搞砸了,现在它能用了。谢谢我想我试过了,我想我把它搞砸了,现在它能用了。谢谢我想我试过了,我想我把它搞砸了,现在它能用了。谢谢