你好。我正在Android平台上开发游戏应用程序。这是我的第一个android开发经验。我的游戏将实现Sprite图形。我有8位格式的精灵,为每个精灵系列定义了调色板。我需要将此精灵加载到android.graphics.Bitmap对象中。现在,我像这样实现它:
int [] pixels = new int[spriteWidth * spriteHeight];
//here i'm filling pixels array
//... pixels[x,y] = myPalette[colorIndex];
Bitmap.createBitmap(spriteWidth, spriteHeight, Bitmap.Config.ARGB_8888);
bitmap.setPixels(pixelsArray, 0, spriteWidth, 0, 0, spriteWidth, spriteHeight);
Run Code Online (Sandbox Code Playgroud)
它工作得很好,但是由于我指定了ARGB_8888,因此我被迫为每个像素使用4个字节,因此我担心内存的使用。
我的问题是:有没有办法用索引颜色创建8位位图,为其定义调色板并定义每个像素颜色索引?
PS我注意到,如果我手动形成字节流,其中包含适当的bmp标头,调色板和像素数据,则可以使用以下命令正确加载它:
BitmapFactory.decodeStream(bmpStream);
Run Code Online (Sandbox Code Playgroud)
这是我的第二个问题:如果我以这种方式加载图像,那么在内存使用方面是否会比上述解决方案更有效?还是bitmapFactory使用自己的内部例程将我的流解码为每个像素格式相同的32位?
任何帮助,不胜感激。对不起,我的英语不好。
| 归档时间: |
|
| 查看次数: |
972 次 |
| 最近记录: |