欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 高考 > Android简洁缩放Matrix实现图像马赛克,Kotlin

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

2025/4/29 20:47:48 来源:https://blog.csdn.net/zhangphil/article/details/144559418  浏览:    关键词: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.AppCompatImageViewclass MyView : AppCompatImageView {private var WIDTH = 0private var HEIGHT = 0private var mBmpDst: Bitmapprivate var mBmpSrc: Bitmapprivate var mScaleFator = 10f //这个值越大,马赛克效果越强烈。constructor(ctx: Context, attributeSet: AttributeSet) : super(ctx, attributeSet) {//WIDTH = resources.displayMetrics.widthPixels//HEIGHT = resources.displayMetrics.heightPixelsmBmpSrc = BitmapFactory.decodeResource(resources, R.mipmap.pic, null)WIDTH = mBmpSrc.widthHEIGHT = mBmpSrc.height//空BitmapmBmpDst = 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

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词