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()
}
}