当前位置: 首页 > news >正文

Android RenderEffect对Bitmap高斯模糊(毛玻璃),Kotlin(1)

Android RenderEffect对Bitmap高斯模糊(毛玻璃),Kotlin(1)

 

 

import android.graphics.Bitmap
import android.graphics.BitmapFactory
import android.graphics.HardwareRenderer
import android.graphics.PixelFormat
import android.graphics.RenderEffect
import android.graphics.RenderNode
import android.graphics.Shader
import android.hardware.HardwareBuffer
import android.media.ImageReader
import android.os.Bundle
import android.util.Log
import android.widget.ImageView
import androidx.appcompat.app.AppCompatActivityclass MainActivity : AppCompatActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.image_layout)//val imageView1 = findViewById<ImageView>(R.id.image1)val imageView2 = findViewById<ImageView>(R.id.image2)val srcBitmap = BitmapFactory.decodeResource(resources, R.mipmap.img)val radius = 10fval t = System.currentTimeMillis()val imageReader = ImageReader.newInstance(srcBitmap.width,srcBitmap.height,PixelFormat.RGBA_8888,1,HardwareBuffer.USAGE_GPU_SAMPLED_IMAGE or HardwareBuffer.USAGE_GPU_COLOR_OUTPUT)val renderNode = RenderNode("BlurEffect")val hardwareRenderer = HardwareRenderer()hardwareRenderer.setSurface(imageReader.surface)hardwareRenderer.setContentRoot(renderNode)renderNode.setPosition(0, 0, imageReader.width, imageReader.height)val blurRenderEffect = RenderEffect.createBlurEffect(radius, radius,Shader.TileMode.MIRROR)renderNode.setRenderEffect(blurRenderEffect)val renderCanvas = renderNode.beginRecording()renderCanvas.drawBitmap(srcBitmap, 0f, 0f, null)renderNode.endRecording()hardwareRenderer.createRenderRequest().setWaitForPresent(true).syncAndDraw()val image = imageReader.acquireNextImage() ?: throw RuntimeException("No Image")val hardwareBuffer = image.hardwareBuffer ?: throw RuntimeException("No HardwareBuffer")val bmp = Bitmap.wrapHardwareBuffer(hardwareBuffer, null)?: throw RuntimeException("Create Bitmap Failed")Log.d("fly", "cost time=${System.currentTimeMillis() - t}")imageView2.setImageBitmap(bmp)//清理工作hardwareBuffer.close()image.close()imageReader.close()renderNode.discardDisplayList()hardwareRenderer.destroy()}
}

 

 

 

遗留问题,需要抽象封装一下,复用部分关键类对象。

 

 

Android新版高斯模糊(毛玻璃)官方实现,Kotlin-CSDN博客文章浏览阅读577次,点赞13次,收藏4次。Android拼接合并图片生成长图代码实现合并两张图片,以第一张图片的宽度为标准,如果被合并的第二张图片宽度和第一张不同,那么就以第一张图片的宽度为准线,对第二张图片进行缩放。Android拼接合并图片生成长图代码实现合并两张图片,以第一张图片的宽度为标准,如果被合并的第二张图片宽度和第一张不同,那么就以第一张图片的宽度为准线,对第二张图片进行缩放。Android BitmapShader简洁实现马赛克/高斯模糊(毛玻璃),Kotlin(三)_android kotlin实现毛玻璃遮罩-CSDN博客。 https://blog.csdn.net/zhangphil/article/details/145575404

 

http://www.lryc.cn/news/536136.html

相关文章:

  • 【linux学习指南】线程同步与互斥
  • JavaScript函数与方法详解
  • 【论文笔记】ZeroGS:扩展Spann3R+GS+pose估计
  • AtCoder - arc058_d Iroha Loves Strings解答与注意事项
  • 企业使用统一终端管理(UEM)工具提高端点安全性
  • Leetcode 算法题 9 回文数
  • 设计模式Python版 命令模式(上)
  • C语言之循环结构:直到型循环
  • 细说STM32F407单片机RTC的备份寄存器原理及使用方法
  • MATLAB计算反映热需求和能源消耗的度数日指标(HDD+CDD)(全代码)
  • J6 X8B/X3C切换HDR各帧图像
  • 09-轮转数组
  • 用vue3写一个好看的wiki前端页面
  • 瑞芯微烧写工具
  • 说下JVM中一次完整的GC流程?
  • Open FPV VTX开源之OSD使用分类
  • 智慧农业-虫害及生长预测
  • Python 识别图片和扫描PDF中的文字
  • C语言如何知道当前系统中的编译器数据类型的大小是多少?
  • gitlab Webhook 配置jenkins时“触发远程构建 (例如,使用脚本)”报错
  • Mysql中使用sql语句生成雪花算法Id
  • /etc/profile vs ~/.bashrc:如何正确使用?
  • SpringBoot实战:高效获取视频资源
  • Flutter_学习记录_数据更新的学习
  • c++ 多线程知识汇总
  • day09_实时类标签/指标
  • 【前端开发学习笔记16】Vue_9
  • Bash 中的运算方式
  • 2025年3月营销灵感日历
  • MySQL的innoDB引擎