首页 文章

如何在J2ME中从PNG读取原始alpha通道?

提问于
浏览
1

我正在编写一个简单的J2ME游戏,它使用带有8位alpha通道的PNG图像 . 问题:并非所有硬件都支持完整的Alpha透明度渲染 . 然而,由于我的游戏本质上是非常静态的(开始时,“精灵”基于当前屏幕大小布置在背景图像上,并且就此而言),我认为可以直接将这些透明图像预渲染到游戏初始化过程中的背景,并在游戏后期使用 . 我不能在Photoshop中预渲染它们,因为它们的位置不是事先知道的 .

但是,似乎没有办法在不支持半透明的设备上读取原始alpha通道,因为它在PNG加载期间被重新采样 . 有些图书馆可以提供帮助吗?或者分别存储alpha通道(例如作为单独的8位PNG图像)并手动应用它们是个好主意?

谢谢!

2 回答

  • 0

    如果您想要创建透明图像,那么PNG图像也具有透明度支持,然后您已经读取了RGB数据以及Alpha通道和处理alpha

    Image transPNG=Image.createImage("/trans.png");  //load the tranparent image
    int rgbData[];
    transPNG.getRGB(rgbData, 0,transPNG.getWidth(), 0, 0,transPNG.getWidth(), transPNG.getHeight());
    Image tranparentImage=Image.createRGBImage(rgbData, width, height, true); //process alpha
    transPNG=null;
    

    上面的代码显示了如何创建透明图像并使用 .

  • 1

    我不能保证这会有所帮助,但您可以尝试使用Java util中的标准方法读取alpha通道 .

    BufferedImage image = ImageIO.read(new File(name));
    
    int[] alpha = new int[1]; //containg alpha-value for one pixel.
    image.getAlphaRaster().getPixel(x, y, alpha);
    
    System.out.println(alpha[0]); //gives the alpha value for x,y
    

相关问题