Android图片转base64加密在其它平台显示

一、前言

有时候传递给后台图片的话需要用base64进行加密,然后在其它平台显示。正常来说直接使用base64加密的内容是没法展示的,除非知道图片格式啥的,或者加上前缀,因为通常来说Android自己加密自己解密,所以也不太需要做这个操作。这里将完整流程进行记录,达到跨端端目的。涉及到其它文件流加密的话也可以参考这种方式。

二、前缀问题

倘若直接想用base64进行保存的话,需要在加密完的字符串前面添加前缀,根据不同的格式有以下两种
text.jpg

data:image/jpeg;base64,

text.png

data:image/png;base64,

下面列出一个完整的加密字符串

data:image/jpeg;base64,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

测试网址
https://www.qtool.net/picconvert
http://www.atoolbox.net/Tool.php?Id=1024
http://www.jsons.cn/img2base64/

三、详细代码

下面是一个将一个drawable图片转换为base64的代码

// data:image/png;base64,
// data:image/jpeg;base64,
    val base64Png = "data:image/png;base64,"
    val base64Jpeg = "data:image/jpeg;base64,"
    private fun loadBase64(){
    
    
        val bitmap = loadResourceByDrawable()
        var base64 = base64Jpeg + bitmapToBase64(bitmap)
        base64 = URLEncoder.encode(base64,Charsets.UTF_8.toString())//需要这个处理,否则网络传输中有些字符会被过滤掉
        lifecycleScope.launch(Dispatchers.IO){
    
    
            Log.e("YM---->","--->base64:${
      
      base64}")
            saveLog(base64)
        }
    }

    //加载资源
    private fun loadResourceByDrawable(): Bitmap{
    
    
        val drawable = ContextCompat.getDrawable(this,R.mipmap.test)
        val bitmapDrawable = drawable as BitmapDrawable
        return bitmapDrawable.bitmap
    }

    /*
     * bitmap转base64
     * */
    private fun bitmapToBase64(bitmap: Bitmap?): String {
    
    
        var result: String? = null
        var baos: ByteArrayOutputStream? = null
        try {
    
    
            if (bitmap != null) {
    
    
                baos = ByteArrayOutputStream()
                bitmap.compress(Bitmap.CompressFormat.JPEG, 50, baos)
                baos.flush()
                baos.close()
                val bitmapBytes: ByteArray = baos.toByteArray()
//                result = Base64.encodeToString(bitmapBytes, Base64.DEFAULT)
                result = Base64.encodeToString(bitmapBytes, Base64.NO_WRAP)
            }
        } catch (e: IOException) {
    
    
            e.printStackTrace()
        } finally {
    
    
            try {
    
    
                if (baos != null) {
    
    
                    baos.flush()
                    baos.close()
                }
            } catch (e: IOException) {
    
    
                e.printStackTrace()
            }
        }
        return result ?: "没有内容"
    }
    /*end*/


    //保存base64到本地文件中
    fun saveLog(base64Content: String){
    
    
        val logPath = Environment.getExternalStorageDirectory().absolutePath + File.separator + "保存图片base64编码.txt"
        val file = File(logPath)
        if (file.exists()){
    
    
            file.delete()
        }
        file.createNewFile()
        val fos = FileOutputStream(file)
        fos.write(base64Content.toByteArray())
        fos.flush()
        fos.close()
    }

不过我的需求是将截图传给后端,所以在上述代码基础上需要添加下面代码

	// 开始截屏
    private fun startCapture(){
    
    
        val bitmap = screenshotView()
        val base64 = bitmapToBase64(bitmap)
        lifecycleScope.launch(Dispatchers.IO){
    
    
            Log.e("YM---->","--->base64:${
      
      base64}")
            saveLog(base64)
        }
    }
    
    private fun screenshotView(): Bitmap {
    
    
        val view: View = window.decorView
        // view.setDrawingCacheEnabled(true); // 设置缓存,可用于实时截图
        val bitmap =
            Bitmap.createBitmap(view.width, view.height, Bitmap.Config.ARGB_8888)
        val canvas = Canvas(bitmap)
        view.draw(canvas)
        // view.setDrawingCacheEnabled(false); // 清空缓存,可用于实时截图
        return bitmap
    }

由于base64的字符串太长,控制台显示不完,所以里面有个代码是将日志保存到本地saveLog()。以供查阅。

猜你喜欢

转载自blog.csdn.net/Mr_Tony/article/details/126540243
今日推荐