【问题标题】:Loading sprite sheet of high resolution 3598 x 3598加载高分辨率 3598 x 3598 的精灵表
【发布时间】:2012-07-27 23:32:05
【问题描述】:

我正在尝试将 spritesheet 图像加载为位图,图像分辨率为 3598 x 3598,大小为 1.21MB。但是当我尝试从以下代码加载它时

AssetManager assets = this.getAssets();
try {
        InputStream inputStream = assets.open("spritesheet.png");
        BufferedInputStream bufferedStream = new BufferedInputStream(inputStream);
        Bitmap bitMap = BitmapFactory.decodeStream(bufferedStream);
} catch (Exception e) {}

我遇到 OOM(内存不足)异常 :'(,请指导我该怎么办??

【问题讨论】:

    标签: android bitmap out-of-memory


    【解决方案1】:

    您应该减小精灵表的大小。您试图将 3598 x 3598 x 8 字节加载到内存中......这很多。

    也许你可以把它分成更小更易于管理的部分?

    【讨论】:

    • 感谢您的快速回复,能否分享一下,多少分辨率或尺寸可以接受?
    • 这取决于硬件:S,但通常你应该瞄准屏幕尺寸内的东西,例如。 hdpi 手机为 480x800。但是,如果您要一次将所有位图精灵都保存在内存中,它可能仍然会给您带来问题。你应该尽量减少持续的内存使用。
    • 我很确定有些精灵只需要偶尔加载一次,这些精灵不需要一直在内存中,可以在需要时加载。跨度>
    • 实际上我想使用图像序列运行动画,我制作了这些图像的精灵表,每个图像的分辨率为 256x256,大小在范围内(1.61 - 25 KB)。图像数量为 188。所以我只想一次显示 256x256 res 图像。但我想做的是,加载一次 spritesheet 图像并根据需要获取帧。
    • 感谢@Warpzit,努力搜索但仍然没有运气:(`
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-11
    • 2015-06-29
    • 2014-10-19
    • 1970-01-01
    • 2016-07-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多