From aa18ca8f823830c26ec5dcec9cc608fc8897a730 Mon Sep 17 00:00:00 2001 From: gardockt Date: Sat, 28 Oct 2023 18:38:36 +0200 Subject: [PATCH] Skip files that cannot be read --- .../tidy/viewmodels/ORTImageViewModel.kt | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/slavabarkov/tidy/viewmodels/ORTImageViewModel.kt b/app/src/main/java/com/slavabarkov/tidy/viewmodels/ORTImageViewModel.kt index dca8153..c597702 100755 --- a/app/src/main/java/com/slavabarkov/tidy/viewmodels/ORTImageViewModel.kt +++ b/app/src/main/java/com/slavabarkov/tidy/viewmodels/ORTImageViewModel.kt @@ -13,6 +13,7 @@ import android.graphics.Bitmap import android.graphics.BitmapFactory import android.net.Uri import android.provider.MediaStore +import android.util.Log import androidx.lifecycle.* import com.slavabarkov.tidy.R import com.slavabarkov.tidy.centerCrop @@ -23,6 +24,7 @@ import com.slavabarkov.tidy.normalizeL2 import com.slavabarkov.tidy.preProcess import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch +import java.io.IOException import java.util.* class ORTImageViewModel(application: Application) : AndroidViewModel(application) { @@ -32,6 +34,8 @@ class ORTImageViewModel(application: Application) : AndroidViewModel(application var embeddingsList: ArrayList = arrayListOf() var progress: MutableLiveData = MutableLiveData(0.0) + private val TAG: String = ORTImageViewModel::class.java.simpleName + init { val imageEmbeddingDao = ImageEmbeddingDatabase.getDatabase(application).imageEmbeddingDao() repository = ImageEmbeddingRepository(imageEmbeddingDao) @@ -74,8 +78,16 @@ class ORTImageViewModel(application: Application) : AndroidViewModel(application } else { val imageUri: Uri = Uri.withAppendedPath(uri, id.toString()) val inputStream = contentResolver.openInputStream(imageUri) - val bytes = inputStream?.readBytes() - inputStream?.close() + val bytes: ByteArray? + + try { + bytes = inputStream?.readBytes() + } catch (ex: IOException) { + Log.w(TAG, "IOException occurred while reading file (ID: $id, date: $date, bucket: \"$bucket\")") + continue + } finally { + inputStream?.close() + } // Can fail to create the image decoder if its not implemented for the image type val bitmap: Bitmap? =