0

我有以下从另一个应用程序中获取的代码

    public static Bitmap createBitMap(DicomObject dcmObj) {
    short[] image = dcmObj.getShorts(Integer.parseInt("7FE00010", 16));
    float wc = dcmObj.getFloat(Integer.parseInt("00281050", 16));
    float ww = dcmObj.getFloat(Integer.parseInt("00281051", 16));

    Bitmap bitMap = Bitmap.createBitmap(dcmObj.getInt(Tag.Columns), dcmObj
            .getInt(Tag.Rows), Bitmap.Config.ARGB_8888);
            bitMap.copyPixelsFromBuffer(LocalImport.makeBuffer((localImport
            .applyWindowing(image, wc, ww)), dcmObj.getInt(Tag.Columns),
            dcmObj.getInt(Tag.Rows)));
    return bitMap;
}

我想要做的是从 SD 卡加载几个 Dicom 图像,读取属性并将它们显示在网格中。上述功能适用于应用程序,但是当我将相同的代码集成到我的应用程序时,它会崩溃。我尝试调试,但变量的值是相同的。

4

2 回答 2

0

在对 Android 进行更改之前,分配大于 VM 限制的缓冲区的唯一方法是在本机代码中分配它们。在本机代码中,您可以为 Android 下的 linux 系统分配物理上可用的尽可能多的内存。我已经用我自己的应用程序对此进行了测试,并分配了大于 150MB 的位图。在本机代码中管理位图将需要编写代码,将位图的“视图”呈现为由 Java 管理的显示大小的图像。

于 2012-05-09T21:34:12.570 回答
0

崩溃是因为主用户界面中的动画占用了大量内存。我复制代码的示例应用程序有任何动画。

猜测增加模拟器中分配的内存大小可以解决问题(尝试一下)。

但至少我知道这不是因为我没有做过任何释放或逻辑错误..

谢谢大家的帮助:)

于 2012-05-10T08:26:01.647 回答