Java Can';无法从单个缓冲区图像像素中获取正确的alpha值

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

我需要获得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 {

    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;假的 否则


我认为您需要让我们知道您看到的错误消息、异常或错误行为。“我不能”通常是不够的信息。我认为您需要让我们知道您看到的错误消息、异常或错误行为。“我不能”通常是不够的信息。我认为您需要让我们知道您看到的错误消息、异常或错误行为。“我不能”通常是不够的信息。我认为您需要让我们知道您看到的错误消息、异常或错误行为。“我不能”通常是不够的信息。我相信我试过了,我想我把它搞砸了,现在它起作用了。谢谢我想我试过了,我想我把它搞砸了,现在它能用了。谢谢我想我试过了,我想我把它搞砸了,现在它能用了。谢谢我想我试过了,我想我把它搞砸了,现在它能用了。谢谢