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

Android简洁缩放Matrix实现图像马赛克,Kotlin

Android简洁缩放Matrix实现图像马赛克,Kotlin

 

原理,通过Matrix把一个原图缩小到原先的1/n,然后再把缩小后的小图放大n倍,自然就是马赛克效果(相当于是放大后像素“糊”成一片了)。

 

 

import android.content.Context
import android.graphics.Bitmap
import android.graphics.BitmapFactory
import android.graphics.Canvas
import android.graphics.Matrix
import android.util.AttributeSet
import androidx.appcompat.widget.AppCompatImageView


class MyView : AppCompatImageView {
    private var WIDTH = 0
    private var HEIGHT = 0
    private var mBmpDst: Bitmap
    private var mBmpSrc: Bitmap

    private var mScaleFator = 10f //这个值越大,马赛克效果越强烈。

    constructor(ctx: Context, attributeSet: AttributeSet) : super(ctx, attributeSet) {
        //WIDTH = resources.displayMetrics.widthPixels
        //HEIGHT = resources.displayMetrics.heightPixels

        mBmpSrc = BitmapFactory.decodeResource(resources, R.mipmap.pic, null)
        WIDTH = mBmpSrc.width
        HEIGHT = mBmpSrc.height

        //空Bitmap
        mBmpDst = Bitmap.createBitmap((WIDTH / mScaleFator).toInt(), (HEIGHT / mScaleFator).toInt(), Bitmap.Config.ARGB_8888)

        val c = Canvas(mBmpDst)
        val mtx = Matrix()
        mtx.setScale(1 / mScaleFator, 1 / mScaleFator)
        c.drawBitmap(mBmpSrc, mtx, null)
    }

    override fun onDraw(canvas: Canvas) {
        val mtx = Matrix()
        mtx.setScale(mScaleFator, mScaleFator)
        canvas.drawBitmap(mBmpDst, mtx, null)
    }
}

 

 

 

原图:

0e3e69de7891438e93bbf878bc70f0ca.jpeg

 

马赛克处理后:

dade43b210854570922819753b866764.png

注意,这是对全图施加马赛克效果。

 

 

 

Android图形图像处理:马赛克(Mosaic)效果_android对图片部分区域做马赛克-CSDN博客文章浏览阅读6k次。以图形图像界经典的实验例图Lenna为例,当手指在图片上滑过后,形成马赛克的: 写一个MosaicView继承自AppCompatImageView:package com.zhangphil;import android.content.Context;import android.graphics.Bitmap;import android.graphics.Can..._android对图片部分区域做马赛克https://blog.csdn.net/zhangphil/article/details/87812785

 


http://www.kler.cn/a/449456.html

相关文章:

  • 由于这些关键原因,我总是手边有一台虚拟机
  • 性能优化!突破性能瓶颈的尖兵CPU Cache
  • alertmanager告警持久化方案:alertsnitch
  • WebRTC服务质量(08)- 重传机制(05) RTX机制
  • Odoo:免费开源ERP的AI技术赋能出海企业电子商务应用介绍
  • Day13 苍穹外卖项目 工作台功能实现、Apache POI、导出数据到Excel表格
  • ubuntu20.04安装imwheel实现鼠标滚轮调速
  • Kubernetes(K8s)学习笔记
  • 基于YOLOv5的智能水域监测系统:从目标检测到自动报告生成
  • 基于Spring Boot的建材租赁系统
  • C/C++基础知识复习(44)
  • 网络安全渗透有什么常见的漏洞吗?
  • 2024年A股最新退市规则
  • mysql 基于chunk机制是如何支持运行期间,动态调整buffer pool大小的
  • 基于微信小程序的在线教育平台设计与实现
  • c语言----顺序结构
  • neo4j console 报错
  • 地理数据库Telepg面试内容整理-Telepg地理数据库概述
  • MySQL EXPLAIN 详解:一眼看懂查询计划
  • Python入门:4.Python中的运算符
  • Android笔记:解决fragment+viewpager第二次进入的时候没有数据的问题
  • dockerfile文档编写(3):构建失败后清理缓存(删除容器和镜像相关命令)
  • 责任链模式(ChainofResponsibilityPattern)
  • 软件测试工程师撰写优质测试用例的秘籍
  • Linux 环境搭建(云服务器和XShell)
  • C# Random 随机数 全面解析