我有以下代码,我从另一个应用程序
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图像读取属性并将其显示在网格中。 上面的函数适用于应用程序,但是当我将相同的代码集成到我的应用程序时,它会崩溃。 我试过调试,但变量的值是相同的。
答案 0 :(得分:0)
在对Android进行更改之前,分配大于VM限制的缓冲区的唯一方法是在本机代码中分配它们。在本机代码中,您可以为Android下的Linux系统分配尽可能多的内存。我已经使用自己的应用程序对此进行了测试,并分配了大于150MB的位图。然后,管理本机代码中的位图将需要编写代码,该代码将位图的“视图”呈现为由Java管理的显示大小的图像。
答案 1 :(得分:0)
猜测增加模拟器中分配的内存大小可以解决问题(dint尝试一下)。
但至少我知道这不是因为我没有做过任何解除分配或逻辑错误..
感谢所有人的帮助:)