java - 如何使用 J2ME (CDC/PP 1.1) 创建 alphablending BufferedImage

标签 java image java-me alphablending j9

我有一个使用创建的 BufferedImage

new BufferedImage(wid,hgt,BufferedImage.TYPE_INT_ARGB);

我使用多个其他图像组装了壁纸。它在 Jave SE 中运行良好,但是当我尝试在 J9 CDC/PP 平台上运行代码时,我发现个人配置文件 BufferedImage 没有构造函数!

谁能告诉我如何使用 CDC 1.0 和个人资料 1.1 构建 alpha channel 支持图像?

<小时/>

编辑:现在我已经创建了后备代码来处理 NoSuchMethodError (等),然后简单地使用 GraphicsConfiguration.createCompatibleImage(int,int) 创建一个图像。 可能这会创建一个 alpha 混合图像,但由于其他优先事项,我需要几周时间才能专门测试它(手持设备上的测试不是我的直接责任,所以它超出了我的手)。

如果我找到更好的答案,我会将其发布为对此的答案;同时,如果其他人打败了我,请放心,如果它有效,我会接受你的答案,并且在可预见的将来我会对这个答案感兴趣(我预计在 2-5 年内仍然需要答案) .

最佳答案

图像类(javax.microedition.lcdui.Image ) 包含一个方法 getRGB(...) ,它将图像解析为图像中每个像素的 RGB+Alpha 值的数组。一旦获得该格式的图像,就可以在对图像进行分层之前轻松调整 Alpha 值以增加其透明度。这实际上是我见过的在 J2ME 中编辑图像透明度的唯一动态方法。

要从 rgba 数组中获取 alpha(透明度)值,您必须使用如下所示的位移位:

int origAlpha = (rgba[j] >> 24);

然后要将 alpha(透明度)值更改为不同的值(不更改该像素的颜色),您可以使用位移来插入不同的透明度级别。

int newAlpha = 0x33; // or use whatever 0-255 value you want, with 255=opaque, 0=transparent
rgba[j] = (rgba[j] & 0x00ffffff);
rgba[j] = (rgba[j] | (newAlpha << 24));

然后 Image 中有一个 createImage(...) 方法,它将图像数据的字节数组作为参数,可用于根据修改后的像素数据数组创建新图像。

索尼爱立信的开发者网站也有一个教程,其中包含名为“Fade in and out images in MIDP 2.0”的示例代码,它解释了“如何更改图像的 Alpha 值以使其看起来混合”,这本质上是 Alpha 混合。

关于java - 如何使用 J2ME (CDC/PP 1.1) 创建 alphablending BufferedImage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1236305/

相关文章:

java-me - LWUIT 形式的左右命令菜单

blackberry - 在 BlackBerry 中下载服务器 SSL 证书

java - 我可以使用什么 Java 库来处理 WSDL 文件?

html - CSS动画悬停问题

java - 如何找到java类?

java - 如何创建JavaFX 16位灰度图像

php - 使用 php 变量显示图像

audio - 在 J2ME 中停止声音循环

java - 如何使用Java发送短信

java - 如果在命令行编译与在 IntelliJ 中编译,java 程序的 UTF-8 输出会有所不同