iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >Android实现滤镜效果ColorMatrix
  • 366
分享到

Android实现滤镜效果ColorMatrix

2024-04-02 19:04:59 366人浏览 泡泡鱼
摘要

本文实例为大家分享了Android实现滤镜效果的具体代码,供大家参考,具体内容如下 1.效果图 2.矩阵算法 package net.surina.myapplication1

本文实例为大家分享了Android实现滤镜效果的具体代码,供大家参考,具体内容如下

1.效果图

2.矩阵算法


package net.surina.myapplication15;
 
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.canvas;
import android.graphics.ColORMatrix;
import android.graphics.ColorMatrixColorFilter;
import android.graphics.Paint;
import android.os.Bundle;
import android.text.InputType;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.GridLayout;
import android.widget.ImageView;
 
import androidx.appcompat.app.AppCompatActivity;
 
import java.util.LinkedList;
import java.util.Stack;
 

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
 
    Bitmap bitmap;
    ImageView iv_photo;
    GridLayout matrixLayout;
    //每个edittext的宽高
    int mEtWidth;
    int mEtHeight;
    //保存20个edittext
    EditText[] mEts = new EditText[20];
 
    //一维数组保存20个矩阵值
    float[] mColorMatrix = new float[20];
 
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.girl);
        iv_photo = (ImageView) findViewById(R.id.iv_photo);
        matrixLayout = (GridLayout) findViewById(R.id.matrix_layout);
        Button btn_change = (Button) findViewById(R.id.btn_change);
        Button btn_reset = (Button) findViewById(R.id.btn_reset);
        btn_change.setOnClickListener(this);
        btn_reset.setOnClickListener(this);
        iv_photo.setImageBitmap(bitmap);
 
        //我们无法在onCreate()方法中获得视图的宽高值,所以通过View的post()方法,在视图创建完毕后获得其宽高值
        matrixLayout.post(new Runnable() {
            @Override
            public void run() {
                mEtWidth = matrixLayout.getWidth() / 5;
                mEtHeight = matrixLayout.getHeight() / 4;
                addEts();
                initMatrix();
            }
 
        });
    }
 
    //动态添加edittext
    private void addEts() {
        for (int i = 0; i < 20; i++) {
            EditText et = new EditText(this);
            et.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL);
            mEts[i] = et;
            matrixLayout.addView(et, mEtWidth, mEtHeight);
        }
    }
 
    //初始化颜色矩阵
    private void initMatrix() {
        for (int i = 0; i < 20; i++) {
            if (i % 6 == 0) {
                mEts[i].setText(String.valueOf(1));
            } else {
                mEts[i].setText(String.valueOf(0));
            }
        }
    }
 
 
    //获取矩阵值
    private void getMatrix() {
        for (int i = 0; i < 20; i++) {
            String matrix = mEts[i].getText().toString();
            boolean isNone = null == matrix || "".equals(matrix);
            mColorMatrix[i] = isNone ? 0.0f : Float.valueOf(matrix);
            if (isNone) {
                mEts[i].setText("0");
            }
        }
    }
 
    //将矩阵设置到图像
    private void setImageMatrix() {
        Bitmap bmp = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.ARGB_8888);
        ColorMatrix colorMatrix = new ColorMatrix();
        colorMatrix.set(mColorMatrix);//将一维数组设置到ColorMatrix
 
        Canvas canvas = new Canvas(bmp);
        Paint paint = new Paint();
        paint.setColorFilter(new ColorMatrixColorFilter(colorMatrix));
        canvas.drawBitmap(bitmap, 0, 0, paint);
        iv_photo.setImageBitmap(bmp);
    }
 
    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.btn_change:
                break;
            case R.id.btn_reset:
                //重置矩阵效果
                initMatrix();
                break;
        }
        //作用矩阵效果
        getMatrix();
        setImageMatrix();
 
    }
}

3.布局


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="Http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
 
    <ImageView
        android:id="@+id/iv_photo"
        android:layout_width="300dp"
        android:layout_height="0dp"
        android:layout_weight="4"
        android:layout_gravity="center_horizontal"
        android:scaleType="fitCenter"
        android:src="@drawable/girl"
        />
 
    <GridLayout
        android:id="@+id/matrix_layout"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="2"
        android:columnCount="5"
        android:rowCount="4">
 
    </GridLayout>
 
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
 
        <Button
            android:id="@+id/btn_change"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="change"/>
        <Button
            android:id="@+id/btn_reset"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="reset"/>
    </LinearLayout>
 
</LinearLayout>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: Android实现滤镜效果ColorMatrix

本文链接: https://www.lsjlt.com/news/125461.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android实现滤镜效果ColorMatrix
    本文实例为大家分享了Android实现滤镜效果的具体代码,供大家参考,具体内容如下 1.效果图 2.矩阵算法 package net.surina.myapplication1...
    99+
    2024-04-02
  • Android如何实现滤镜效果ColorMatrix
    这篇文章将为大家详细讲解有关Android如何实现滤镜效果ColorMatrix,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Android是什么Android是一种基于Linux内核的自由及开放源代码的...
    99+
    2023-06-14
  • canvas如何实现滤镜效果
    这篇文章给大家分享的是有关canvas如何实现滤镜效果的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。具体内容如下<!DOCTYPE html>  ...
    99+
    2024-04-02
  • Flutter实现图片滤镜效果
    目录ColorFilter 介绍选取图片布局本着学习的态度,研究了一下flutter里面的ColorFilter,字面意思翻译颜色过滤器,学习就是要举一反三,拓展思考就把这个功能做了...
    99+
    2024-04-02
  • Python OpenCV实现3种滤镜效果实例
    目录前言浮雕滤镜效果雕刻滤镜效果凸透镜滤镜效果总结前言 本篇文章要使用OpenCV、Numpy 和Math这3个工具包实现一个简单的滤镜编辑器。在这个滤镜编辑器中,包含了3种滤镜效果...
    99+
    2024-04-02
  • PythonOpencv实现最强美颜滤镜效果
    目录前言环境安装效果展示第一组随机第二组随机源码展示额外的小知识补充:加载图片:图片模糊处理:总结前言 继老干妈、辣条之后,中国美颜软件在海外一夜成名,把所有人都幻化成了粉红小甜心。...
    99+
    2024-04-02
  • canvas中怎么实现图片滤镜效果
    canvas中怎么实现图片滤镜效果,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1.获取图像数据 img.src = &rsquo...
    99+
    2024-04-02
  • 怎么用canvas实现图片滤镜效果
    小编给大家分享一下怎么用canvas实现图片滤镜效果,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! 1.获取图像数据 img...
    99+
    2024-04-02
  • Canvas系列中滤镜效果的实现方法
    这篇文章给大家分享的是有关Canvas系列中滤镜效果的实现方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Canvas 真的是一个神奇的东西,不仅能够绘制各种图形、文本和位图,还能够对位图进行复杂的像素运算和处...
    99+
    2023-06-09
  • Python学习之图片滤镜效果的实现
    目录前言Image模块对于图像处理的基本功能讲解对图像滤镜的应用1、显示图片轮廓2、显示图片浮雕效果3、显示图片轮廓4、显示图片模糊效果总结前言 滤镜效果是图像处理中常用的一种技术,...
    99+
    2023-05-19
    Python实现图片滤镜效果 Python图片滤镜 Python滤镜
  • css滤镜效果有哪些
    本篇内容介绍了“css滤镜效果有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!CSS样式的filter...
    99+
    2024-04-02
  • 如何使用CSS实现简单的滤镜效果
    这篇文章主要介绍“如何使用CSS实现简单的滤镜效果”,在日常操作中,相信很多人在如何使用CSS实现简单的滤镜效果问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何使用CSS实...
    99+
    2024-04-02
  • 实现微信小程序中的图片滤镜效果
    实现微信小程序中的图片滤镜效果随着社交媒体应用的流行,人们越来越喜欢在照片中应用滤镜效果,以增强照片的艺术效果和吸引力。在微信小程序中也可以实现图片滤镜效果,为用户提供更多有趣和创造性的照片编辑功能。本文将介绍如何在微信小程序中实现图片滤镜...
    99+
    2023-11-21
    图片 微信小程序 滤镜效果
  • 怎么用CSS滤镜实现颜色渐变翻转效果
    本篇内容介绍了“怎么用CSS滤镜实现颜色渐变翻转效果 ”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一下是...
    99+
    2024-04-02
  • 如何使用CSS滤镜实现圆角及波浪效果
    本篇内容主要讲解“如何使用CSS滤镜实现圆角及波浪效果”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用CSS滤镜实现圆角及波浪效果”吧!首先,我们来看这样...
    99+
    2024-04-02
  • 如何使用CSS滤镜实现内凹平滑圆角效果
    这篇文章给大家分享的是有关如何使用CSS滤镜实现内凹平滑圆角效果的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。使用 CSS 实现如下的布局:在 CSS 世界中,如果只是下述这种效...
    99+
    2024-04-02
  • css3如何实现过滤效果
    小编给大家分享一下css3如何实现过滤效果,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!上面的图片就是css3新特性的滤镜效果,...
    99+
    2024-04-02
  • JavaScript实现放大镜效果
    本文实例为大家分享了JavaScript实现放大镜效果的具体代码,供大家参考,具体内容如下 这次实现的效果如下: 这次的案例稍微有一点难度,在css和js上都需要多加思考,话不多说...
    99+
    2024-04-02
  • Unity实现瞄准镜效果
    本文实例为大家分享了Unity实现瞄准镜效果的具体代码,供大家参考,具体内容如下 using UnityEngine; using System.Collections; p...
    99+
    2024-04-02
  • OpenCV-Python实现怀旧滤镜与连环画滤镜
    目录怀旧滤镜实现原理实现怀旧滤镜连环画滤镜原理实现连环画滤镜熔铸算法冰冻算法怀旧滤镜实现原理 不管是荣耀华为手机还是其他的手机,我们都可以找到相机中的怀旧效果,这是手机中常用的一种滤...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作