pull/32/head
parent
a0e875209b
commit
7cb8b70cdb
@ -0,0 +1,57 @@ |
|||||||
|
package io.legado.app.help |
||||||
|
|
||||||
|
import android.annotation.TargetApi |
||||||
|
import android.content.Context |
||||||
|
import android.graphics.Bitmap |
||||||
|
import android.os.Build |
||||||
|
import android.renderscript.Allocation |
||||||
|
import android.renderscript.Element |
||||||
|
import android.renderscript.RenderScript |
||||||
|
import android.renderscript.ScriptIntrinsicBlur |
||||||
|
|
||||||
|
import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool |
||||||
|
import com.bumptech.glide.load.resource.bitmap.BitmapTransformation |
||||||
|
|
||||||
|
import java.security.MessageDigest |
||||||
|
|
||||||
|
class BlurTransformation(context: Context, private val radius: Int) : BitmapTransformation() { |
||||||
|
private val rs: RenderScript = RenderScript.create(context) |
||||||
|
|
||||||
|
@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1) |
||||||
|
override fun transform(pool: BitmapPool, toTransform: Bitmap, outWidth: Int, outHeight: Int): Bitmap { |
||||||
|
val blurredBitmap = toTransform.copy(Bitmap.Config.ARGB_8888, true) |
||||||
|
|
||||||
|
// Allocate memory for Renderscript to work with |
||||||
|
//分配用于渲染脚本的内存 |
||||||
|
val input = Allocation.createFromBitmap( |
||||||
|
rs, |
||||||
|
blurredBitmap, |
||||||
|
Allocation.MipmapControl.MIPMAP_FULL, |
||||||
|
Allocation.USAGE_SHARED |
||||||
|
) |
||||||
|
val output = Allocation.createTyped(rs, input.type) |
||||||
|
|
||||||
|
// Load up an instance of the specific script that we want to use. |
||||||
|
//加载我们想要使用的特定脚本的实例。 |
||||||
|
val script = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs)) |
||||||
|
script.setInput(input) |
||||||
|
|
||||||
|
// Set the blur radius |
||||||
|
//设置模糊半径 |
||||||
|
script.setRadius(radius.toFloat()) |
||||||
|
|
||||||
|
// Start the ScriptIntrinsicBlur |
||||||
|
//启动 ScriptIntrinsicBlur, |
||||||
|
script.forEach(output) |
||||||
|
|
||||||
|
// Copy the output to the blurred bitmap |
||||||
|
//将输出复制到模糊的位图 |
||||||
|
output.copyTo(blurredBitmap) |
||||||
|
|
||||||
|
return blurredBitmap |
||||||
|
} |
||||||
|
|
||||||
|
override fun updateDiskCacheKey(messageDigest: MessageDigest) { |
||||||
|
messageDigest.update("blur transformation".toByteArray()) |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue