Android glide4.5 网络图片下载为bitmap并保存相册

bulide.glide中依赖:

    implementation 'com.github.bumptech.glide:glide:4.5.0'
    annotationProcessor 'com.github.bumptech.glide:compiler:4.5.0'

代码中使用,注释已经写的很详细


var bitmap: Bitmap? = null

  var simpleTarget: SimpleTarget<Bitmap> = object : SimpleTarget<Bitmap>() {
            override fun onResourceReady(resource: Bitmap, transition: Transition<in Bitmap>?) {
                bitmap = resource
                // 保存相册
              
         saveBitmap(bitmap!!,System.currentTimeMillis().toString())
        //保存为jpg格式的方案,给bitmap每一个像素绘制成白色,就不会透明部分是黑色了保存到相册
//        convertBitmap2Jpg(bitmap!!,System.currentTimeMillis().toString())

            }
        }

        Glide.with(activity!!)
                .asBitmap()
                .load(url)
                .into(simpleTarget)





    /** * 将图片存到本地 */
    private fun saveBitmap(bm: Bitmap, picName: String): Uri? {
        try {

            var dir: String = Environment.getExternalStorageDirectory().getAbsolutePath() + "/BlossmRippleShare/" + picName + ".png"
            var f: File = File(dir)
            if (!f.exists()) {
                f.getParentFile().mkdirs()
                f.createNewFile()
            }
            var out: FileOutputStream = FileOutputStream(f)
            bm.compress(Bitmap.CompressFormat.PNG, 100, out)
            out.flush()
            out.close()

//            if (writtenToDisk){
            //通知相册更新
            var intent: Intent = Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE)
            var uri: Uri = Uri.fromFile(f)
            intent.data = uri
            activity?.sendBroadcast(intent)
            // 如果下载成功,做提示下载成功的操作
            Toast.makeText(activity, "download success", Toast.LENGTH_SHORT).show()
//            }
//            else{
//                Toast.makeText(activity,"download faile",Toast.LENGTH_SHORT).show()
//            }


            return uri
        } catch (e: FileNotFoundException) {
            e.printStackTrace()
        } catch (e: IOException) {
            e.printStackTrace(); }
        return null
    }




  /**
     * 把bitmap,png格式的图片 转换成jpg图片
     * 因jpg不支持透明,如png透明图片,则转成白底!
     * @param bitmap  源图
     * @param newFilepath 新图片的路径
     */
    fun convertBitmap2Jpg(bitmap: Bitmap, picName: String) {
        //复制Bitmap  因为png可以为透明,jpg不支持透明,把透明底明变成白色
        //主要是先创建一张白色图片,然后把原来的绘制至上去
        var outB: Bitmap = bitmap.copy(Bitmap.Config.ARGB_8888, true)
        var canvas: Canvas = Canvas(outB)
        canvas.drawColor(Color.WHITE)
//        canvas.drawColor(Color.parseColor("#D9ffffff"))
        canvas.drawBitmap(bitmap, 0f, 0f, Paint())

//        var dir: String = Environment.getExternalStorageDirectory().getAbsolutePath() + "/BlossmRippleShare/" + picName + ".jpg"
        var dir: String = Environment.getExternalStorageDirectory().getAbsolutePath() + "/BlossmRippleShare/" + picName + ".png"
        var f: File = File(dir)
        if (!f.exists()) {
            f.getParentFile().mkdirs()
            f.createNewFile()
        }
        try {
            var out: FileOutputStream = FileOutputStream(f)
//            if (outB.compress(Bitmap.CompressFormat.JPEG, 100, out)) {
            if (outB.compress(Bitmap.CompressFormat.PNG, 100, out)) {
                out.flush()
                out.close()
            }
            //通知相册更新
            var intent: Intent = Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE)
            var uri: Uri = Uri.fromFile(f)
            intent.data = uri
            activity?.sendBroadcast(intent)
            // 如果下载成功,做提示下载成功的操作
            Toast.makeText(activity, "download success", Toast.LENGTH_SHORT).show()

        } catch (e: FileNotFoundException) {
            e.printStackTrace()
        } catch (e: IOException) {
            e.printStackTrace()

        }
    }

 

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值