Я пытаюсь сохранить захваченное изображение в базе данных помещений и позже загрузить его на сервер с другими деталями. Код захвата изображения приведен ниже
val activityResultLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
if (result.resultCode == Activity.RESULT_OK) {
val data: Intent? = result.data
val uri: Uri? = if (data?.data != null){ data.data }else{ billUri }
if (uri != null) {
chequeBitmap = uriToBitmap(this, uri)
binding.chequeimage.setImageBitmap(chequeBitmap)
binding.addimage.visibility = View.GONE
binding.chequeimage.setOnClickListener {
// Clear the image and show the add image button
binding.chequeimage.setImageResource(R.drawable.image_upload)
binding.addimage.visibility = View.VISIBLE
}
} else {
Toast.makeText(this, "No Image Found", Toast.LENGTH_SHORT).show()
}
}
}
binding.addimage.setOnClickListener {
val intent = Intent(Intent.ACTION_GET_CONTENT)
intent.type = "image/*"
intent.putExtra(MediaStore.EXTRA_MEDIA_TITLE, "Gallery")
val captureIntent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
val timeStamp: String = SimpleDateFormat("yyyyMMdd_HHmm_ss",
Locale.getDefault()).format(Date())
val storageDir: File? = getExternalFilesDir("DO_NOT_DELETE")
val photoFile: File? = File.createTempFile(
"Bill_${timeStamp}_", /* prefix */
".jpg", /* suffix */
storageDir /* directory */
)
photoFile?.let { file ->
val billURI: Uri = FileProvider.getUriForFile(this, "$packageName.provider", file)
billUri = billURI
captureIntent.putExtra(MediaStore.EXTRA_OUTPUT, billURI)
}
когда я загружаю его в базу данных, он загружается успешно, но из-за большого размера строки в базе данных sqlite он не читается приложением. А затем приложение постоянно вылетает, пока база данных не будет удалена.
Я пытаюсь сохранить изображение как ByteArray в базе данных комнаты
data class DepositData(
@PrimaryKey(autoGenerate = true)
val id: Int = 0,
var bill: String,
val payimage: ByteArray
) {
override fun equals(other: Any?): Boolean {
if (this === other) return true
if (javaClass != other?.javaClass) return false
other as DepositData
return payimage.contentEquals(other.payimage)
}
override fun hashCode(): Int {
return payimage.contentHashCode()
Я хочу, чтобы размер изображения был уменьшен до 1,5 МБ (максимум) и сохранен в базе данных комнаты, не испортив качество изображения или его четкость. Раньше я сохранял изображения в виде миниатюр, но для получения четких изображений это бесполезно. Изображение при загрузке размывается. Я не хочу сохранять URI изображения в комнате, так как он может быть удален пользователем, и из-за этого приложение может выйти из строя.
Чтобы загрузить его в базу данных, я использую код ниже:
Чтобы загрузить его в базу данных, я использую код ниже:
р>
binding.save.setOnClickListener {
val payImage: ByteArray = bitmapToByteArray(chequeBitmap)!!
val data = DepositData(0, bill = bill, payimage = payImage)
collectionViewModel.insertRecord(data)
}
Подробнее здесь: https://stackoverflow.com/questions/784 ... m-database
Сохранение захваченного изображения через намерение или из галереи в базу данных комнаты. ⇐ Android
Форум для тех, кто программирует под Android
1714838261
Anonymous
Я пытаюсь сохранить захваченное изображение в базе данных помещений и позже загрузить его на сервер с другими деталями. Код захвата изображения приведен ниже
val activityResultLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
if (result.resultCode == Activity.RESULT_OK) {
val data: Intent? = result.data
val uri: Uri? = if (data?.data != null){ data.data }else{ billUri }
if (uri != null) {
chequeBitmap = uriToBitmap(this, uri)
binding.chequeimage.setImageBitmap(chequeBitmap)
binding.addimage.visibility = View.GONE
binding.chequeimage.setOnClickListener {
// Clear the image and show the add image button
binding.chequeimage.setImageResource(R.drawable.image_upload)
binding.addimage.visibility = View.VISIBLE
}
} else {
Toast.makeText(this, "No Image Found", Toast.LENGTH_SHORT).show()
}
}
}
binding.addimage.setOnClickListener {
val intent = Intent(Intent.ACTION_GET_CONTENT)
intent.type = "image/*"
intent.putExtra(MediaStore.EXTRA_MEDIA_TITLE, "Gallery")
val captureIntent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
val timeStamp: String = SimpleDateFormat("yyyyMMdd_HHmm_ss",
Locale.getDefault()).format(Date())
val storageDir: File? = getExternalFilesDir("DO_NOT_DELETE")
val photoFile: File? = File.createTempFile(
"Bill_${timeStamp}_", /* prefix */
".jpg", /* suffix */
storageDir /* directory */
)
photoFile?.let { file ->
val billURI: Uri = FileProvider.getUriForFile(this, "$packageName.provider", file)
billUri = billURI
captureIntent.putExtra(MediaStore.EXTRA_OUTPUT, billURI)
}
когда я загружаю его в базу данных, он загружается успешно, но из-за большого размера строки в базе данных sqlite он не читается приложением. А затем приложение постоянно вылетает, пока база данных не будет удалена.
Я пытаюсь сохранить изображение как ByteArray в базе данных комнаты
data class DepositData(
@PrimaryKey(autoGenerate = true)
val id: Int = 0,
var bill: String,
val payimage: ByteArray
) {
override fun equals(other: Any?): Boolean {
if (this === other) return true
if (javaClass != other?.javaClass) return false
other as DepositData
return payimage.contentEquals(other.payimage)
}
override fun hashCode(): Int {
return payimage.contentHashCode()
Я хочу, чтобы размер изображения был уменьшен до 1,5 МБ (максимум) и сохранен в базе данных комнаты, не испортив качество изображения или его четкость. Раньше я сохранял изображения в виде миниатюр, но для получения четких изображений это бесполезно. Изображение при загрузке размывается. Я не хочу сохранять URI изображения в комнате, так как он может быть удален пользователем, и из-за этого приложение может выйти из строя.
Чтобы загрузить его в базу данных, я использую код ниже:
Чтобы загрузить его в базу данных, я использую код ниже:
р>
binding.save.setOnClickListener {
val payImage: ByteArray = bitmapToByteArray(chequeBitmap)!!
val data = DepositData(0, bill = bill, payimage = payImage)
collectionViewModel.insertRecord(data)
}
Подробнее здесь: [url]https://stackoverflow.com/questions/78429581/saving-captured-image-through-intent-or-from-gallery-into-room-database[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия