GpuImage 在Android 上的应用以及各种效果参照表

GPUImage特效实现
  • Step 1: GpuImage 集成
implementation 'jp.co.cyberagent.android:gpuimage:2.0.4'
  • Step 2: 布局中使用

在布局中加上GPUImageView,为了显示处理后的图片载体

    <jp.co.cyberagent.android.gpuimage.GPUImageView
        android:id="@+id/gpu_image_later"
        android:layout_width="match_parent"
        android:layout_height="300dp"
        app:gpuimage_show_loading="false"
        app:gpuimage_surface_type="texture_view"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
  • Step 3: 代码中使用
    1:在Activity 中,创建GPUimage 以及将原始图片展示出来
 gpuImageView = findViewById(R.id.gpu_image_later);
 gpuImage = new GPUImage(this);
 oldBitmap=BitmapFactory.decodeResource(this.getResources(), R.mipmap.fengjin);
 gpuImageView.setImage(oldBitmap);

2:获取对应想要处理的效果Filter

blic class GPUFilter {
   
   
    public static final int FAST_GAUSSIAN_BLUR_FILTER = 1;//高斯模糊
    public static final int BOX_BLUR_FILTER = 2;//盒装模糊
    public static final int CONVOLUTION_3X3_FILTER = 3;//3x3卷积,高亮大色块变黑,加亮边缘、线条等
    public static final int TEXTURE_3X3_FILTER = 4;
    public static final int ADD_BLEND_FILTER = 5;// 通常用于创建两个图像之间的动画变亮模糊效果
    public static final int ALPHA_BLEND_FILTER = 6; //透明混合,通常用于在背景上应用前景的透明度
    public static final int BRIGHTNESS_FILTER = 7;//亮度
    public static final int EXPOSURE_FILTER = 8;//曝光

    public static GPUImageFilter getGPUImageFilter(int filerFlag) {
   
   
        GPUImageFilter mGPUImageFilter;
        switch (filerFlag) {
   
   
            default:
            case FAST_GAUSSIAN_BLUR_FILTER:
                mGPUImageFilter = new GPUImageGaussianBlurFilter();
                break;
            case BOX_BLUR_FILTER:
                mGPUImageFilter = new GPUImageBoxBlurFilter();
                break;
            case CONVOLUTION_3X3_FILTER:
                mGPUImageFilter = new GPUImage3x3ConvolutionFilter();
                break;
            case TEXTURE_3X3_FILTER:
                mGPUImageFilter = new GPUImage3x3TextureSamplingFilter();
                break;
            case ADD_BLEND_FILTER:
                mGPUImageFilter = new GPUImageAddBlendFilter();
//.........代码过多,在文章后面会放上github 地址,可以去copy

3:通过Filter设置想要的效果展示出来

Bitmap gpuImage1 = GPUImageUtil.getGPUImage(gpuImage, oldBitmap, filter);
gpuImageView.setImage(gpuImage1);
  • Step 4: 部分使用效果

在这里插入图片描述
图片有点小,凑合着看吧
最后附上Android 最全的效果对应工具类:

package com.example.myapplication;

import jp.co.cyberagent.android.gpuimage.filter.GPUImage3x3ConvolutionFilter;
import jp.co.cyberagent.android.gpuimage.filter.GPUImage3x3TextureSamplingFilter;
import jp.co.cyberagent.android.gpuimage.filter.GPUImageAddBlendFilter;
import jp.co.cyberagent.android.gpuimage.filter.GPUImageAlphaBlendFilter;
import jp.co.cyberagent.android.gpuimage.filter.GPUImageBoxBlurFilter;
import jp.co.cyberagent.android.gpuimage.filter.GPUImageBrightnessFilter;
import jp.co.cyberagent.android.gpuimage.filter.GPUImageBulgeDistortionFilter;
import jp.co.cyberagent.android.gpuimage.filter.GPUImageCGAColorspaceFilter;
import jp.co.cyberagent.android.gpuimage.filter.GPUImageChromaKeyBlendFilter;
import jp.co.cyberagent.android.gpuimage.filter.GPUImageColorBurnBlendFilter;
import jp.co.cyberagent.android.gpuimage.filter.GPUImageColorDodgeBlendFilter;
import jp.co.cyberagent.android.gpuimage.filter.GPUImageColorInvertFilter;
import jp.co.cyberagent.android.gpuimage.filter.GPUImageContrastFilter;
import jp.co.cyberagent.android.gpuimage.filter.GPUImageCrosshatchFilter;
import jp.co.cyberagent.android.gpuimage.filter.GPUImageDarkenBlendFilter;
import jp.co.cyberagent.android.gpuimage.filter.GPUImageDifferenceBlendFilter;
import jp.co.cyberagent.android.gpuimage.filter.GPUImageDilationFilter;
import jp.co.cyberagent.android.gpuimage.filter.GPUImageDissolveBlendFilter;
import jp.co.cyberagent.android.gpuimage
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值