gpt4 book ai didi

java - 位图太大 - 内存不足?

转载 作者:行者123 更新时间:2023-12-02 07:40:23 24 4
gpt4 key购买 nike

我正在尝试在我的设备上制作人物的一些 Action 动画。我创建了一个 Sprite 表,最终大小为 1.23Mb。图像尺寸为 5000 x 1500 像素。该表有 8 行,每一行都有自己的操作。 (走,鞠躬,跳跃......)。最长的 Action 是 32 个图像。所以图像基本上是 32 列、8 行。所以,现在我加载它:

一旦我这样做:

private Bitmap bmp;
bmp = BitmapFactory.decodeResource(getResources(), R.drawable.myImage);

我收到错误:

Thread [<1> main] (Suspended (exception OutOfMemoryError))
BitmapFactory.decodeResource(Resources, int, BitmapFactory$Options) line: 385 BitmapFactory.decodeResource(Resources, int) line: 404
GameView.(Context) line: 25 FightActivity.onCreate(Bundle) line: 13 FightActivity(Activity).performCreate(Bundle) line: 4465
Instrumentation.callActivityOnCreate(Activity, Bundle) line: 1049
ActivityThread.performLaunchActivity(ActivityThread$ActivityClientRecord, Intent) line: 1920
ActivityThread.handleLaunchActivity(ActivityThread$ActivityClientRecord, Intent) line: 1981 ActivityThread.access$600(ActivityThread, ActivityThread$ActivityClientRecord, Intent) line: 123
ActivityThread$H.handleMessage(Message) line: 1147
ActivityThread$H(Handler).dispatchMessage(Message) line: 99 Looper.loop() line: 137 ActivityThread.main(String[]) line: 4424
Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: not available [native method] Method.invoke(Object, Object...) line: 511 ZygoteInit$MethodAndArgsCaller.run() line: 784
ZygoteInit.main(String[]) line: 551 NativeStart.main(String[]) line: not available [native method]

我的文件大小是否受到限制?看起来很奇怪?如果是这样,我唯一的选择是将 Sprite 分割成单独的“ Action ”图像,而不是一个大 Sprite 表中每行的一系列 Action 图像?

希望有人可以帮助新手。

最佳答案

简单的计算即可得出答案。假设每像素 32 位,则有 ((5000x1500)像素) * (每像素 32 位)/(每字节 8 位)/(1024 * 1024 位每 Mb) = 28MB。

我进行了 Google 搜索,发现不同版本的 Android 和不同手机的默认堆大小范围为 16MB - 32MB。我认为 24​​MB 最常见。因此,您很可能只是耗尽了图像的内存。查看这篇文章以了解您的堆大小是多少:https://stackoverflow.com/a/9428660/1448071 .

编辑:似乎没有增加 Android 虚拟机堆大小的好方法。这里描述了一个带有 setMinimumHeapSize 函数的 VMRuntime.getRuntime() 函数 Android: how to increase heap size at runtime? 。但它似乎正在被弃用。我建议你拆分你的 Sprite 。

关于java - 位图太大 - 内存不足?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11706381/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com