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)
}
}
原图:
马赛克处理后:
注意,这是对全图施加马赛克效果。
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