В настоящее время я работаю над преобразованием изображения, импортируемого из галереи пользователя в растровую карту.Exception: java.io.IOException: getPixels failed with error invalid scale (Ask Gemini)
at android.graphics.ImageDecoder.nDecodeBitmap(Native Method)
at android.graphics.ImageDecoder.decodeBitmapInternal(ImageDecoder.java:1607)
at android.graphics.ImageDecoder.decodeBitmapImpl(ImageDecoder.java:1761)
at android.graphics.ImageDecoder.decodeBitmap(ImageDecoder.java:1747)
at com.w36495.senty.util.ImageConverter.uriToBitmap(extentions.kt:80)
at com.w36495.senty.view.component.image.picker.ImagePickerViewModel$cropAndSaveImage$2.invokeSuspend(ImagePickerViewModel.kt:143)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:100)
at kotlinx.coroutines.internal.LimitedDispatcher$Worker.run(LimitedDispatcher.kt:113)
at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:89)
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:586)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:820)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:717)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:704)
< /code>
Я протестировал его на двух реальных устройствах. < /p>
case 1. Android 14 (API 34)
он работает нормально без ошибок с этой функцией (UritobitMap). < /p>
case 2. Adroid 9 (API 28)
rupe u upply, что записано только для рисунков. Это только с imagedecoder.decodebitmap (источник) без OneHeaderDecodEdListener, результат выходит нормально. < /p>
< ImageInfo >
size : 3000x4000
MIMEType : image/jpeg
< /code>
Почему возникает эта ошибка?scale = min(0.36, 0.27) = 0.27
targetWidth = 810
targetHeight = 1080
< /code>
Но почему .. где происходит ошибка? < /p>
fun uriToBitmap(context: Context, uri: Uri): Bitmap {
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
val source = ImageDecoder.createSource(context.contentResolver, uri)
try {
val onHeaderDecodedListener =
OnHeaderDecodedListener { decoder, imageInfo, _ ->
val width = imageInfo.size.width.toFloat()
val height = imageInfo.size.height.toFloat()
val maxSize = 1080
val scale = min(maxSize / width, maxSize / height)
val targetWidth = (width * scale).toInt()
val targetHeight = (height * scale).toInt()
decoder.setTargetSize(targetWidth, targetHeight)
}
ImageDecoder.decodeBitmap(source, onHeaderDecodedListener)
} catch (e: Exception) {
Log.d("ImageConverter", "Exception: ${e.stackTraceToString()}")
ImageDecoder.decodeBitmap(source)
}
} else {
MediaStore.Images.Media.getBitmap(context.contentResolver, uri)
}
}
Подробнее здесь: https://stackoverflow.com/questions/796 ... alid-scale
Исключение: java.io.ioexception: getPixels не удалось с ошибкой неверной шкалой ⇐ Android
Форум для тех, кто программирует под Android
1748415880
Anonymous
В настоящее время я работаю над преобразованием изображения, импортируемого из галереи пользователя в растровую карту.Exception: java.io.IOException: getPixels failed with error invalid scale (Ask Gemini)
at android.graphics.ImageDecoder.nDecodeBitmap(Native Method)
at android.graphics.ImageDecoder.decodeBitmapInternal(ImageDecoder.java:1607)
at android.graphics.ImageDecoder.decodeBitmapImpl(ImageDecoder.java:1761)
at android.graphics.ImageDecoder.decodeBitmap(ImageDecoder.java:1747)
at com.w36495.senty.util.ImageConverter.uriToBitmap(extentions.kt:80)
at com.w36495.senty.view.component.image.picker.ImagePickerViewModel$cropAndSaveImage$2.invokeSuspend(ImagePickerViewModel.kt:143)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:100)
at kotlinx.coroutines.internal.LimitedDispatcher$Worker.run(LimitedDispatcher.kt:113)
at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:89)
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:586)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:820)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:717)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:704)
< /code>
Я протестировал его на двух реальных устройствах. < /p>
case 1. Android 14 (API 34)
он работает нормально без ошибок с этой функцией (UritobitMap). < /p>
case 2. Adroid 9 (API 28)
rupe u upply, что записано только для рисунков. Это только с imagedecoder.decodebitmap (источник) без OneHeaderDecodEdListener, результат выходит нормально. < /p>
< ImageInfo >
size : 3000x4000
MIMEType : image/jpeg
< /code>
Почему возникает эта ошибка?scale = min(0.36, 0.27) = 0.27
targetWidth = 810
targetHeight = 1080
< /code>
Но почему .. где происходит ошибка? < /p>
fun uriToBitmap(context: Context, uri: Uri): Bitmap {
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
val source = ImageDecoder.createSource(context.contentResolver, uri)
try {
val onHeaderDecodedListener =
OnHeaderDecodedListener { decoder, imageInfo, _ ->
val width = imageInfo.size.width.toFloat()
val height = imageInfo.size.height.toFloat()
val maxSize = 1080
val scale = min(maxSize / width, maxSize / height)
val targetWidth = (width * scale).toInt()
val targetHeight = (height * scale).toInt()
decoder.setTargetSize(targetWidth, targetHeight)
}
ImageDecoder.decodeBitmap(source, onHeaderDecodedListener)
} catch (e: Exception) {
Log.d("ImageConverter", "Exception: ${e.stackTraceToString()}")
ImageDecoder.decodeBitmap(source)
}
} else {
MediaStore.Images.Media.getBitmap(context.contentResolver, uri)
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79641672/exception-java-io-ioexception-getpixels-failed-with-error-invalid-scale[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия