diff --git a/app/src/main/java/com/sw/inbound/activity/FoodCollectionActivity.kt b/app/src/main/java/com/sw/inbound/activity/FoodCollectionActivity.kt index 55219ab..d938619 100644 --- a/app/src/main/java/com/sw/inbound/activity/FoodCollectionActivity.kt +++ b/app/src/main/java/com/sw/inbound/activity/FoodCollectionActivity.kt @@ -293,7 +293,7 @@ class FoodCollectionActivity : ComponentActivity() { ) initBox() val imageVector = try { - FoodModule.bitmap2FloatArray(cropBitmap) + FoodModule.bitmap2FloatArray(cropBitmap, false) } catch (e: Exception) { e.printStackTrace() toast("操作失败") diff --git a/app/src/main/java/com/sw/inbound/dialog/GoodsStoreDialog.kt b/app/src/main/java/com/sw/inbound/dialog/GoodsStoreDialog.kt index b290bef..a72ae51 100644 --- a/app/src/main/java/com/sw/inbound/dialog/GoodsStoreDialog.kt +++ b/app/src/main/java/com/sw/inbound/dialog/GoodsStoreDialog.kt @@ -453,7 +453,7 @@ class GoodsStoreDialog( } Thread { try { - val imageVector = FoodModule.bitmap2FloatArray(bitmap) + val imageVector = FoodModule.bitmap2FloatArray(bitmap, true) if (imageVector != null) { ObjectBox.boxStore.runInTx { box?.put(Food(name = goods.goodsName + goods.goodsCode, foodIdx = 0, foodVector = imageVector)) diff --git a/app/src/main/java/com/sw/inbound/objbox/FoodModule.kt b/app/src/main/java/com/sw/inbound/objbox/FoodModule.kt index 76c6ef2..eb9b658 100644 --- a/app/src/main/java/com/sw/inbound/objbox/FoodModule.kt +++ b/app/src/main/java/com/sw/inbound/objbox/FoodModule.kt @@ -61,11 +61,13 @@ object FoodModule { // } // } - fun bitmap2FloatArray(originBitmap: Bitmap): FloatArray? { + fun bitmap2FloatArray(originBitmap: Bitmap, isRecycle: Boolean): FloatArray? { var rgb565Bitmap: Bitmap?=null try { val scaledBitmap = originBitmap.scale(MODEL_INPUT_WIDTH, MODEL_INPUT_HEIGHT) - originBitmap.recycle() + if (isRecycle) { + originBitmap.recycle() + } rgb565Bitmap = scaledBitmap.copy(Bitmap.Config.RGB_565, false) scaledBitmap.recycle() val inputTensor = TensorImageUtils.bitmapToFloat32Tensor( @@ -121,11 +123,11 @@ object FoodModule { nameScoreList.add(IdNameScore(id = it.id, name = box.get(it.id).name?:"", score = it.score)) } Timber.tag("FoodModule").d("queryFood数据:${nameScoreList.toJsonString()}") - + query.close() return nameScoreList } fun getFoodScoreList(bitmap: Bitmap, queryCount: Int = 15): List { - val floatArray = bitmap2FloatArray(bitmap) + val floatArray = bitmap2FloatArray(bitmap, false) if (floatArray == null) return emptyList() val nameScoreList = queryFoodNameScore(floatArray, queryCount) if (nameScoreList.isEmpty()) {