文档章节

Android 图片 滤镜效果 通过矩阵实现

 聆听ing
发布于 2016/04/06 09:53
字数 303
阅读 19
收藏 0

然,看到头像点击要加滤镜效果,有个新奇 的做法是用setColorFilter();

/**
 * Created by yx on 16/4/3.
 */public class DiscolorImageView extends ImageView{    /**
     * 变暗
     */
    private final float[] SELECTED_DARK = new float[]
            {1, 0, 0, 0, -80,            0, 1, 0, 0, -80,            0, 0, 1, 0, -80,            0, 0, 0, 1, 0};    /**
     * 变亮
     */

    private final float[] SELECTED_BRIGHT = new float[]
            {1, 0, 0, 0, 80,                    0, 1, 0, 0, 80,                    0, 0, 1, 0, 80,                    0, 0, 0, 1, 0};    /**
     * 高对比度
     */

    private final float[] SELECTED_HDR = new float[]
            {5, 0, 0, 0, -250,                    0, 5, 0, 0, -250,                    0, 0, 5, 0, -250,                    0, 0, 0, 1, 0};    /**
     * 高饱和度
     */
    private final float[] SELECTED_HSAT = new float[]
            {(float) 3, (float) -2, (float) -0.2, 0, 50,
                    -1, 2, -0, 0, 50,
                    -1, -2, 4, 0, 50,                    0, 0, 0, 1, 0};    /**
     * 改变色调
     */
    private final float[] SELECTED_DISCOLOR = new float[]
            {(float) -0.5, (float) -0.6, (float) -0.8, 0, 0,
                    (float) -0.4, (float) -0.6, (float) -0.1, 0, 0,
                    (float) -0.3, 2, (float) -0.4, 0, 0,                    0, 0, 0, 1, 0};    public DiscolorImageView(Context context) {
        super(context);        this.setOnTouchListener(VIEW_TOUCH_DISCOLOR);
    }    public DiscolorImageView(Context context, AttributeSet attrs) {
        super(context, attrs);        this.setOnTouchListener(VIEW_TOUCH_DISCOLOR);
    }    public DiscolorImageView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);        this.setOnTouchListener(VIEW_TOUCH_DISCOLOR);
    }    public OnTouchListener VIEW_TOUCH_DISCOLOR = new OnTouchListener() {


        @Override        public boolean onTouch(View v, MotionEvent event) {            if (event.getAction() == MotionEvent.ACTION_DOWN) {
                ImageView iv = (ImageView) v;
                iv.setColorFilter(new ColorMatrixColorFilter(SELECTED_HDR));              //iv.setColorFilter(new ColorMatrixColorFilter(SELECTED_BRIGHT));
              //iv.setColorFilter(new ColorMatrixColorFilter(SELECTED_HDR));
              //iv.setColorFilter(new ColorMatrixColorFilter(SELECTED_HSAT));
              //iv.setColorFilter(new ColorMatrixColorFilter(SELECTED_DISCOLOR));
            } else if (event.getAction() == MotionEvent.ACTION_UP) {
                ImageView iv = (ImageView) v;
                iv.clearColorFilter();
                mPerformClick();
            } else if (event.getAction() == MotionEvent.ACTION_CANCEL) {
                ImageView iv = (ImageView) v;
                iv.clearColorFilter();
            }            return true;

        }
    };        private void mPerformClick() {
            DiscolorImageView.this.performClick();
        }
    }


本文转载自:http://www.jianshu.com/p/29d24e73b61d?utm_campaign=haruki&utm_content=note&utm_medium=reader_shar...

共有 人打赏支持
粉丝 0
博文 9
码字总数 100
作品 0
朝阳
私信 提问
数字图像处理、拼接,图像静态滤镜(GPUImage/GPU加速) - Android

图像滤镜处理的两种方式:RGB点乘运算;GPU的矩阵运算(效率更高)。图片处理中的计算:RGBA~利用自带的方法修改色调,饱和度,亮度来修改图片;矩阵~利用矩阵计算得到新的矩阵修改图片。 几个...

元谷
03/12
0
0
OpenGL实现物体动画和视频特效

OpenGL实现视频的水印、滤镜?OpenGL实现视频的剪裁、旋转? 2D/3D物体的 旋转,平移,缩放? OpenGL图片滤镜与视频滤镜? 矩阵(Matrix)是一个按照长方阵列排列的复数或实数集合,最早来自于方...

shareus
2018/04/24
0
0
Android 高级UI7 滤镜效果和颜色通道过滤

Android 高级UI 目录 滤镜效果:对图像进行一定的过滤加工处理。使用Paint设置滤镜效果 1.MaskFilter遮罩滤镜处理 (1)模糊遮罩滤镜 (BlurMaskFilter) (2)浮雕遮罩滤镜(EmbossMaskFilter) 2.颜...

香沙小熊
02/20
0
0
Matrix, ColorMatrix

作为Android源码中的一个常用类,它的作用是持有一个3*3的矩阵数组,用于坐标的转换。 Matrix用来制作动画效果、改变图片大小、给图片加各类滤镜等。 Matrix 的应用 - 压缩图像;Matrix 的应...

shareus
2018/04/13
0
0
基于gpuimage的android图片滤镜(instagram效果)

基于gpuimage的android图片滤镜,实现instagram效果。 效果模仿的ios的别人基于gpuimage实现的滤镜效果。 来github拉代码把。 https://github.com/sangmingming/android-instagram-filter...

码农明明
2014/08/19
6.8K
1

没有更多内容

加载失败,请刷新页面

加载更多

Spring Boot 2.x基础教程:快速入门

简介 在您第1次接触和学习Spring框架的时候,是否因为其繁杂的配置而退却了?在你第n次使用Spring框架的时候,是否觉得一堆反复黏贴的配置有一些厌烦?那么您就不妨来试试使用Spring Boot来让...

程序猿DD
昨天
1
0
SpringSecurity认证流程源码级详解

SpringSecurity认证流程源码级详解 认证流程说明 认证结果如何在多个请求之间共享 获取认证用户信息

chendom
昨天
1
0
C语言中的volatile——让我保持原样

volatile译为:易变的。这不是和题目的让我保持原样矛盾了吗?其实不然,在变量前加上该关键字修饰,确实是告诉编译器,这个变量是一个容易改变的变量,不要对它进行优化,每次都要到变量的地...

天王盖地虎626
昨天
1
0
五、RabbitMQ的消息属性(读书笔记)

简介 当使用RabbitMQ发布消息时,消息又AMQP规范中的三个低层帧类型组成: Basic.publish方法帧; 内容头帧; 消息体帧; 这三种帧类型按顺序一起工作,以便消息传递时完好无损。 其中,内容...

XuePeng77
昨天
1
0
JavaEE开发的颠覆者SpringBoot实战摘要笔记

一、注解理解 1.spring注解 1)@Configuration/@ComponentScan/@Bean注解实现java方式的配置。 @Configuration代替xml文件 @ComponentScan指定扫描范围 @Bean代替bean标签 2)@Bean、@Componen...

啃不动地大坚果
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部