我想解码我从画廊拍的照片,但它有一个错误。我尝试过各种方法,但都没有成功。请帮我修改代码。
这是我的代码:https://pastebin.com/syWjqPDK
class TambahDataActivity : AppCompatActivity() {
private val GALLERY_REQUEST_CODE = 101
private var encoded_string: String? = null
private var image_name: String? = null
private var file: File? = null
private var file_uri: Uri? = null
private var bitmap: Bitmap? = null
private val STORAGE_PERMISSION_CODE = 1
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_tambah_data)
btn_tambah_foto.setOnClickListener {
if (ContextCompat.checkSelfPermission(applicationContext,
Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED){
val intent = Intent(Intent.ACTION_PICK)
intent.type = "image/*"
intent.putExtra(MediaStore.EXTRA_OUTPUT, file_uri)
startActivityForResult(intent, GALLERY_REQUEST_CODE)
} else {
ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.READ_EXTERNAL_STORAGE), STORAGE_PERMISSION_CODE)
}
}
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (resultCode == Activity.RESULT_OK) when (requestCode) {
GALLERY_REQUEST_CODE -> {
//data.getData returns the content URI for the selected Image
file_uri = data?.data!!
val fileee: String = data.data?.lastPathSegment!!
val filename: String = fileee.substring(fileee.lastIndexOf("/") + 1)
img_adu.setImageURI(file_uri)
img_adu.visibility = View.VISIBLE
file = File(
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)
.toString() + File.separator + filename
)
file_uri = Uri.fromFile(file)
bitmap = BitmapFactory.decodeFile(file_uri!!.path)
val stream = ByteArrayOutputStream()
bitmap?.compress(Bitmap.CompressFormat.JPEG, 100, stream)
bitmap?.recycle()
val array = stream.toByteArray()
encoded_string = Base64.encodeToString(array, 0)
}
}
}
}
这是logcat的结果
2020-03-19 14:03:10.735 10607-10607/tgs.app.pengaduan E/fileUrii: /storage/emulated/0/Pictures/IMG_20200319_100639.jpg
2020-03-19 14:03:10.736 10607-10607/tgs.app.pengaduan E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /storage/emulated/0/Pictures/IMG_20200319_100639.jpg (No such file or directory)```
从gallery fun中选择图像,如下所示:
private fun selectImageFromGallery() {
val intent = Intent()
intent.type = "image/*"
intent.action = Intent.ACTION_GET_CONTENT
startActivityForResult(
Intent.createChooser(
intent,
"Please select..."
),
GALLERY_REQUEST_CODE
)
}
像这样的结果:
override fun onActivityResult(
requestCode: Int,
resultCode: Int,
data: Intent?
) {
super.onActivityResult(
requestCode,
resultCode,
data
)
if (requestCode == GALLERY_REQUEST_CODE
&& resultCode == Activity.RESULT_OK
&& data != null
&& data.data != null
) {
// Get the Uri of data
val file_uri = data.data
img_adu.setImageURI(file_uri)
img_adu.visibility = View.VISIBLE
bitmap = file_uri?.getCapturedImage(applicationContext)
val stream = ByteArrayOutputStream()
bitmap?.compress(Bitmap.CompressFormat.JPEG, 100, stream)
bitmap?.recycle()
val array = stream.toByteArray()
encoded_string = Base64.encodeToString(array, 0)
}
}
获取位图扩展,如下所示:
fun Uri.getCapturedImage(context: Context): Bitmap? {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
val source =
context?.contentResolver?.let { ImageDecoder.createSource(it, this) }
return source?.let { ImageDecoder.decodeBitmap(it) }
} else {
return MediaStore.Images.Media.getBitmap(
context?.contentResolver,
this
)
}
}
祝你好运
当我在 XMLParser。JAVA } 我的decdeBase64方法: 我想知道如何将从XML解析的图像正确添加到SimpleAdapter。我必须创建自己的适配器吗?
问题内容: 我想解码从画廊拍摄的照片,但是有错误。我尝试了各种方法,但没有一个成功。请帮助修复我的代码。 这是我的代码:https : //pastebin.com/syWjqPDK } 这是logcat的结果 问题答案: 从画廊的乐趣中选择图像,如下所示: onActivityResult像这样: 获取像这样的位图扩展名: 祝好运
我试着从图库中打开图像并在Imageview中显示相同的活动。我添加了WRITE_EXTERNAL_STORAGE、READ_EXTERNAL_STORAGE、internet等权限。当我从图库中选择图像并返回活动时,它会显示这种类型的错误 09-04 15:02:57.161 316 42-31642/com.androidTutorialPoint.qrcodescanner E/Bitmap
问题内容: 嘿,我不确定为什么每次选择图库中的图像时都会出现这种情况吗? 这是代码: 错误: 问题答案: 不要假设有文件路径。Android 4.4及更高版本即将删除它们。而且您获得的uri已经没有路径。 您仍然可以通过()或文件描述符访问文件内容。 在这里进行了解释:ContentProviders:打开一个文档(向下滚动,指向该节的链接似乎已损坏) 而且确实适用于较旧的android版本。
如何解决它。请帮助我。提前谢谢。
我有一个定义权限的文件。该代码适用于较低版本的android,但8.0及更高版本不适用。所以我明确地要求进行自我许可检查。这段代码昨天还在工作,但突然我再次获得了相同的权限拒绝错误。