这是我当前的实现,输出与预期不同的
private fun multiplyBitmap(bitmap: Bitmap?):Bitmap{
var mRenderScript = RenderScript.create(context!!)
var bitmapMultiply = mOriginalBitmap!!.copy(mOriginalBitmap!!.config,true)
var blend = ScriptIntrinsicBlend.create(mRenderScript, U8_4(mRenderScript))
var allocationIn = Allocation.createFromBitmap(mRenderScript, originalBackground)
var allocationOut = Allocation.createFromBitmap(mRenderScript,bitmapMultiply)
blend.forEachMultiply(allocationIn,allocationOut)
return bitmapMultiply
}
您的代码缺少一个关键部分。它应该在调用forEachMultiply
之后调用allocationOut.copyTo(bitmapMultiply)
。
copyTo
调用确保数据完全从GPU内存复制到支持位图的数据存储。