bitmap.sameAs不适用于通过意图拾取进行的图像比较

问题描述

我的应用程序检查新选择的图像是否与上一张相同,因此我不需要更新云数据,但是newBitmap.sameAs(oldBitmap)总是返回false,即使我选择了同一张照片。

我的代码片段:

private lateinit var oldBitmap: Bitmap
private lateinit var newBitmap: Bitmap

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_my_profile)

    myProfilePictureUrl = intent.getStringExtra("myProfilePictureUrl")!!

    if (myProfilePictureUrl.isNotEmpty()) {
        Picasso.get().load(myProfilePictureUrl).into(my_profile_imageView)
    }

    oldBitmap = (my_profile_imageView.drawable as BitmapDrawable).bitmap       //for later comparison

    my_profile_imageView.setonClickListener {
        val intent = Intent(Intent.ACTION_PICK)

        intent.type = "image/*"

        startActivityForResult(intent,RESULT_CODE_PICK_IMAGE)
    }
}

override fun onActivityResult(requestCode: Int,resultCode: Int,data: Intent?) {
   super.onActivityResult(requestCode,resultCode,data)

   if (requestCode == RESULT_CODE_PICK_IMAGE && resultCode == Activity.RESULT_OK) {
       val inputStream = contentResolver.openInputStream(data!!.data!!)

       val bitmap = BitmapFactory.decodeStream(inputStream)

       newBitmap = bitmap              //for comparison

       my_profile_imageView.setimageBitmap(bitmap)
   }
} 

用户单击操作栏上的“保存”按钮时,它将首先检查它们是否是同一张照片:

private fun updateProfile(nickname: String) {
    if (this::newBitmap.isInitialized && !newBitmap.sameAs(oldBitmap)) {    //here
        
        //upload task code

    } 
}

问题在于: !newBitmap.sameAs(oldBitmap)即使是同一张照片也总是返回false,这可能是 PICASSO 的问题吗?或我以前比较的方法不正确。任何帮助将不胜感激。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)