使用 Glide 时找不到 BlurTransformation是什么原因?
作者:互联网
可能是因为这个类不是 Glide 的核心部分,而是需要额外的库支持。要使用模糊功能,您可以使用 Glide 的 BitmapTransformation
类来自行实现模糊效果,或者使用现成的库。
方法 1:自己实现 BlurTransformation
可以使用 BitmapTransformation
来创建自定义的模糊转换类。下面是一个实现模糊的示例:
1. 创建 BlurTransformation 类
创建一个新的 Kotlin 文件,命名为 BlurTransformation.kt
,并实现如下:
import android.content.Context
import android.graphics.Bitmap
import android.graphics.BitmapFactory
import androidx.annotation.NonNull
import com.bumptech.glide.load.Key
import com.bumptech.glide.load.Transformation
import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool
import com.bumptech.glide.load.resource.bitmap.BitmapTransformation
import java.security.MessageDigest
class BlurTransformation(private val context: Context, private val radius: Int) : BitmapTransformation() {
override fun updateDiskCacheKey(@NonNull messageDigest: MessageDigest) {
messageDigest.update((ID + radius).toByteArray(Key.CHARSET))
}
override fun transform(pool: BitmapPool, toTransform: Bitmap, outWidth: Int, outHeight: Int): Bitmap {
return blurBitmap(context, toTransform, radius)
}
private fun blurBitmap(context: Context, bitmap: Bitmap, radius: Int): Bitmap {
val outputBitmap = Bitmap.createBitmap(bitmap)
val rs = android.renderscript.RenderScript.create(context)
val input = android.renderscript.Allocation.createFromBitmap(rs, bitmap)
val output = android.renderscript.Allocation.createFromBitmap(rs, outputBitmap)
val script = android.renderscript.ScriptIntrinsicBlur.create(rs, android.renderscript.Element.U8_4(rs))
script.setRadius(radius.toFloat())
script.setInput(input)
script.output(output)
script.output(output)
output.copyTo(outputBitmap)
input.destroy()
output.destroy()
rs.destroy()
return outputBitmap
}
companion object {
private const val ID = "com.example.myapp.BlurTransformation"
}
}
Kotlin
确保在使用时根据您的包名替换 com.example.myapp
。
2. 使用 BlurTransformation
使用您刚才创建的 BlurTransformation
类:
import com.bumptech.glide.Glide
import com.bumptech.glide.request.RequestOptions
val imageView: ImageView = findViewById(R.id.imageView) // 替换为你的 ImageView
Glide.with(this)
.load(R.drawable.your_avatar) // 替换为你的头像资源或 URL
.apply(RequestOptions().transform(BlurTransformation(this, 25))) // 模糊半径
.into(imageView)
Kotlin
方法 2:使用依赖库
如果您希望使用简单的方式来实现模糊效果,可以使用第三方库,例如 Glide
结合 JPCT
或 AndroidX
的 RenderScript
。
一个推荐的库是 Glide
的扩展库,这样你可以直接使用现成的模糊转换功能:
1. 添加 Glide 依赖
确保你在 build.gradle
中添加了 Glide 依赖。
dependencies {
implementation 'com.github.bumptech.glide:glide:4.12.0'
kapt 'com.github.bumptech.glide:compiler:4.12.0'
implementation 'jp.wasabeef.glide.transformations:glide-transformations:4.3.0' // 添加此行
}
Groovy
2. 使用 BlurTransformation
使用现成的库调用模糊功能:
import com.bumptech.glide.Glide
import com.bumptech.glide.load.resource.bitmap.BitmapTransitionOptions
import jp.wasabeef.glide.transformations.BlurTransformation
Glide.with(this)
.load(R.drawable.your_avatar) // 替换为你的头像资源或 URL
.apply(RequestOptions.bitmapTransform(BlurTransformation(25, 3))) // 参数1是模糊半径,参数2是缩放因子
.into(imageView)
标签: 来源: