我有以下的代碼,我從另一個應用程序的OutOfMemoryError:位圖大小超過上裝載DICOM圖像VM預算
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圖像讀取屬性並在網格中顯示它們。 上面的函數對應用程序工作正常,但是當我將相同的代碼集成到我的應用程序時,它崩潰了。 我試過調試,但變量的值是相同的。
剛剛發現,如果我修改位圖位圖的參數=位圖
謝謝.createBitmap(dcmObj.getInt(Tag.Columns),dcmObj .getInt(Tag.Rows),Bitmap.Config.ARGB_8888);位圖bitmap = Bitmap.createBitmap(dcmObj.getInt(Tag.Columns)-100,dcmObj .getInt(Tag.Rows)-100,Bitmap.Config.ARGB_8888);撞車不會發生,但圖像不好。通過將配置更改爲Config.RGB_565也可以避免崩潰,但加載的圖像失真。 – Preethi
您需要縮小圖像的大小。當你調整它的大小時,你應該用2的冪來實現,所以它的一半,四分之一等等。這會給你最高質量的調整大小。 –
謝謝@DavidScott。崩潰不會發生,但我在網格視圖中獲得空白圖像。 :( – Preethi