You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

条码扫描获取的Base64图片转换失败:‘unimplemented’错误求助

解决PDF_417条码Base64图片显示错误及代码问题

代码存在的核心问题

  • Intent传递与接收不匹配:第一个页面传递的是Bitmap(key为image),第二个页面却尝试获取key为barcodeValue的字符串,完全不对应
  • ImageView设置方法错误:不存在setImage(String)方法,无法直接用字符串设置图片
  • 直接传递Bitmap存在隐患:跨页面传递Bitmap易引发内存问题,也是导致Failed to create image decoder with message 'unimplemented'错误的可能原因
  • 拼写错误:Sysytem.out.println应为System.out.println

修正后的代码

第一个页面(条码扫描回调)

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    val result: IntentResult? = IntentIntegrator.parseActivityResult(requestCode, resultCode, data)
    if (result != null) {
        val barcodeValue = result.content
        if (barcodeValue != null) {
            // 直接传递Base64字符串,避免Bitmap跨页面传递的问题
            val intent = Intent(this, BarcodeScanner::class.java)
            intent.putExtra("barcode_base64", barcodeValue)
            startActivity(intent)
        } else {
            System.out.println("Can't handle")
        }
    } else {
        super.onActivityResult(requestCode, resultCode, data)
    }
}

第二个页面(图片显示页面)

class BarcodeScanner : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.barcode_layout)
        val barcodeImage = findViewById<ImageView>(R.id.img)
        val barcodeBase64 = intent.getStringExtra("barcode_base64")
        
        barcodeBase64?.let {
            val imageBytes = Base64.decode(it, Base64.DEFAULT)
            val decodedBitmap = BitmapFactory.decodeByteArray(imageBytes, 0, imageBytes.size)
            barcodeImage.setImageBitmap(decodedBitmap)
        }
    }
}

修正说明

  1. 改用传递Base64字符串替代Bitmap,避免跨页面传递大对象引发的内存和解码错误
  2. 统一Intent的key值,确保传递与接收逻辑对应
  3. 使用setImageBitmap方法正确为ImageView设置解码后的图片
  4. 修复了拼写错误

内容的提问来源于stack exchange,提问作者user16357470

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 08:32:56