Stack Overflow на русском Asked by Njves on November 30, 2021
Возможно ли декодировать картинку с android устройство и передать по websocket`у?
Есть ли пример кода или статья которую можно прочитать.
С проблемой разобрался! Но на заметку фотографии отправляются в уменьшеном размере
onActivityResult
val bitmap = data?.extras?.get("data") as Bitmap
ivStudentPhoto.setImageBitmap(bitmap)
val byteArrayOutput = ByteArrayOutputStream()
bitmap.compress(Bitmap.CompressFormat.JPEG, 80, byteArrayOutput)
photoArray = byteArrayOutput.toByteArray()
Button
val cameraIntent = Intent(MediaStore.ACTION_IMAGE_CAPTURE) startActivityForResult(cameraIntent, REQUEST_PHOTO);
Answered by Njves on November 30, 2021
Могу предложить ознакомится с вариантом кода который я использую у себя в проекте. Допускаю что картинку вы будете брать из файловой системы и поэтому обработка будет происходить в методе onActivityResult
:
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
when {
requestCode == 1 && resultCode == Activity.RESULT_OK -> {
if (data != null) {
val fileUri = data.data!!
var name = ""
var size: Long? = null
fileUri.let { returnUri ->
contentResolver.query(returnUri, null, null, null, null)
}?.use { cursor ->
val nameIndex = cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME)
val sizeIndex = cursor.getColumnIndex(OpenableColumns.SIZE)
cursor.moveToFirst()
name = cursor.getString(nameIndex)
size = cursor.getLong(sizeIndex)
}
val content = data.data?.let { uri -> contentResolver.openInputStream(uri).use { it!!.readBytes() } }
val fileContent = String(content!!, Charsets.ISO_8859_1)
sendFilePart(0, fileContent, name, size!!)
}
}
requestCode == 2 && resultCode == Activity.RESULT_OK -> {
if (data != null) {
....
}
}
else -> {
}
}
}
в коде выше вы получаете файл и дальше вытаскиваете из него байты content
, имя name
и размер size
. Дальше лично у меня идет отправка файла в том формате который принимает сокет, а именно в текстовом:
ws.send(ChatRequestMessages.sendFilePart(fileContent, fileName, fileSize))
переменная fileContent
идет в стринг поэтому можете делать дальше что вам нужно по вашему заданию. Может поможет такой способ, если что-то будет непонятно - спрашивайте :)
Answered by Andrew on November 30, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP