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

时间:2011-05-10 20:13:13

标签: image image-processing java-me png alpha

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

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

谢谢!

2 个答案:

答案 0 :(得分:1)

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 :(得分:0)

我不能保证这会有所帮助,但您可以尝试使用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