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

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

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

Kotlin 复制代码
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)
    }
}

原图:

马赛克处理后:

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

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

相关推荐
似霰1 分钟前
AIDL Hal 开发笔记5----实现AIDL HAL
android·framework·hal
2501_9151063240 分钟前
iOS 成品包加固,在只有 IPA 的情况下,能做那些操作
android·ios·小程序·https·uni-app·iphone·webview
LcVong2 小时前
Android 25(API 25)+ JDK 17 环境搭建
android·java·开发语言
AALoveTouch2 小时前
某麦APP抢票技术解析实现
android·ios
stevenzqzq3 小时前
Android 自定义View迁移Compose实战指南
android·compose
似霰5 小时前
AIDL Hal 开发笔记6----添加硬件访问服务
android·framework·hal
诸神黄昏EX5 小时前
Android OTA 之 升级包编译机制
android
2501_915909066 小时前
苹果iOS应用上架详细流程与注意事项解析
android·ios·小程序·https·uni-app·iphone·webview
AC赳赳老秦7 小时前
跨境科技服务的基石:DeepSeek赋能多语言技术文档与合规性说明的深度实践
android·大数据·数据库·人工智能·科技·deepseek·跨境
晚霞的不甘7 小时前
解决 Flutter for OpenHarmony 构建失败:HVigor ERROR 00303168 (SDK component missing)
android·javascript·flutter