美文网首页 移动 前端 Python Android JavaAndroid 知识
GpuImage 在Android 上的应用以及各种效果参照表

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

作者: 嘉伦哥 | 来源:发表于2021-02-04 16:51 被阅读0次
    • 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: 部分使用效果
    screen-20210204-082959.gif

    图片有点小,凑合着看吧
    最后附上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.filter.GPUImageDivideBlendFilter;
    import jp.co.cyberagent.android.gpuimage.filter.GPUImageEmbossFilter;
    import jp.co.cyberagent.android.gpuimage.filter.GPUImageExclusionBlendFilter;
    import jp.co.cyberagent.android.gpuimage.filter.GPUImageExposureFilter;
    import jp.co.cyberagent.android.gpuimage.filter.GPUImageFalseColorFilter;
    import jp.co.cyberagent.android.gpuimage.filter.GPUImageFilter;
    import jp.co.cyberagent.android.gpuimage.filter.GPUImageGammaFilter;
    import jp.co.cyberagent.android.gpuimage.filter.GPUImageGaussianBlurFilter;
    import jp.co.cyberagent.android.gpuimage.filter.GPUImageGlassSphereFilter;
    import jp.co.cyberagent.android.gpuimage.filter.GPUImageGrayscaleFilter;
    import jp.co.cyberagent.android.gpuimage.filter.GPUImageHalftoneFilter;
    import jp.co.cyberagent.android.gpuimage.filter.GPUImageHardLightBlendFilter;
    import jp.co.cyberagent.android.gpuimage.filter.GPUImageHazeFilter;
    import jp.co.cyberagent.android.gpuimage.filter.GPUImageHighlightShadowFilter;
    import jp.co.cyberagent.android.gpuimage.filter.GPUImageHueFilter;
    import jp.co.cyberagent.android.gpuimage.filter.GPUImageKuwaharaFilter;
    import jp.co.cyberagent.android.gpuimage.filter.GPUImageLevelsFilter;
    import jp.co.cyberagent.android.gpuimage.filter.GPUImageLightenBlendFilter;
    import jp.co.cyberagent.android.gpuimage.filter.GPUImageLookupFilter;
    import jp.co.cyberagent.android.gpuimage.filter.GPUImageLuminanceThresholdFilter;
    import jp.co.cyberagent.android.gpuimage.filter.GPUImageMonochromeFilter;
    import jp.co.cyberagent.android.gpuimage.filter.GPUImageMultiplyBlendFilter;
    import jp.co.cyberagent.android.gpuimage.filter.GPUImageNonMaximumSuppressionFilter;
    import jp.co.cyberagent.android.gpuimage.filter.GPUImageNormalBlendFilter;
    import jp.co.cyberagent.android.gpuimage.filter.GPUImageOpacityFilter;
    import jp.co.cyberagent.android.gpuimage.filter.GPUImageOverlayBlendFilter;
    import jp.co.cyberagent.android.gpuimage.filter.GPUImagePosterizeFilter;
    import jp.co.cyberagent.android.gpuimage.filter.GPUImageRGBDilationFilter;
    import jp.co.cyberagent.android.gpuimage.filter.GPUImageRGBFilter;
    import jp.co.cyberagent.android.gpuimage.filter.GPUImageSaturationFilter;
    import jp.co.cyberagent.android.gpuimage.filter.GPUImageScreenBlendFilter;
    import jp.co.cyberagent.android.gpuimage.filter.GPUImageSharpenFilter;
    import jp.co.cyberagent.android.gpuimage.filter.GPUImageSketchFilter;
    import jp.co.cyberagent.android.gpuimage.filter.GPUImageSmoothToonFilter;
    import jp.co.cyberagent.android.gpuimage.filter.GPUImageSobelEdgeDetectionFilter;
    import jp.co.cyberagent.android.gpuimage.filter.GPUImageSoftLightBlendFilter;
    import jp.co.cyberagent.android.gpuimage.filter.GPUImageSourceOverBlendFilter;
    import jp.co.cyberagent.android.gpuimage.filter.GPUImageSphereRefractionFilter;
    import jp.co.cyberagent.android.gpuimage.filter.GPUImageSubtractBlendFilter;
    import jp.co.cyberagent.android.gpuimage.filter.GPUImageSwirlFilter;
    import jp.co.cyberagent.android.gpuimage.filter.GPUImageThresholdEdgeDetectionFilter;
    import jp.co.cyberagent.android.gpuimage.filter.GPUImageToneCurveFilter;
    import jp.co.cyberagent.android.gpuimage.filter.GPUImageToonFilter;
    import jp.co.cyberagent.android.gpuimage.filter.GPUImageTransformFilter;
    import jp.co.cyberagent.android.gpuimage.filter.GPUImageVignetteFilter;
    import jp.co.cyberagent.android.gpuimage.filter.GPUImageWhiteBalanceFilter;
    
    public 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 final int CONTRAST_FILTER = 9;//对比度
        public static final int SATURATION_FILTER = 10;//饱和度
        public static final int GAMMA_FILTER = 11;//伽马
        public static final int BULGE_DISTORTION_FILTER = 12;//凸起失真,鱼眼效果
        public static final int CGA_COLOR_SPACE_FILTER = 13;//CGA色彩滤镜,形成黑、浅蓝、紫色块的画面
        public static final int CHROMA_KEY_BLENDF_ILTER = 14;//色度键混合
        public static final int COLOR_BURN_BLEND_FILTER = 15;//色彩加深混合
        public static final int COLOR_DODGE_BLEND_FILTER = 16;//色彩减淡混合
        public static final int COLOR_INVERT_FILTER = 17;//反色
        public static final int CROSS_HATCH_FILTER = 18;//交叉线阴影,形成黑白网状画面
        public static final int DARKEN_BLEND_FILTER = 19;//加深混合,通常用于重叠类型
        public static final int DIFFERENCE_BLEND_FILTER = 20;//差异混合,通常用于创建更多变动的颜色
        public static final int DILATION_FILTER = 21;//扩展边缘模糊,变黑白
        public static final int DISSOLVE_BLEND_FILTER = 22;//溶解
        public static final int DIVIDE_BLEND_FILTER = 23;//通常用于创建两个图像之间的动画变暗模糊效果
        public static final int EMBOSS_FILTER = 24;//浮雕效果,带有点3d的感觉
        public static final int EXCLUSION_BLEND_FILTER = 25;//排除混合
        public static final int FALSE_COLOR_FILTER = 26;//色彩替换(替换亮部和暗部色彩)
        public static final int GLASS_SPHERE_FILTER = 27;//水晶球效果
        public static final int GRAYS_CALE_FILTER = 28;//灰度
        public static final int HALF_TONE_FILTER = 29;//点染,图像黑白化,由黑点构成原图的大致图形
        public static final int HARD_LIGHT_BLEND_FILTER = 30;//强光混合,通常用于创建阴影效果
        public static final int HAZE_FILTER = 31;//朦胧加暗
        public static final int HIGH_LIGHT_SHADOW_FILTER = 32;//提亮阴影
        public static final int HUE_FILTER = 33;//色度
        public static final int KUWAHARA_FILTER = 34;//桑原(Kuwahara)滤波,水粉画的模糊效果;处理时间比较长,慎用
        public static final int LEVELS_FILTER = 35;//色阶
        public static final int LIGHTEN_BLEND_FILTER = 36;//减淡混合,通常用于重叠类型
        public static final int LOOKUP_FILTER = 37;//lookup 色彩调整
        public static final int LUMINANCE_THRESHOLD_FILTER = 38;//亮度阈
        public static final int MONO_CHROME_FILTER = 39;//单色
        public static final int MULTIPLY_BLEND_FILTER = 40;//通常用于创建阴影和深度效果
        public static final int NONMAXIMUM_SUPPRESSION_FILTER = 41;//非最大抑制,只显示亮度最高的像素,其他为黑
        public static final int NORMAL_BLEND_FILTER = 42;//正常
        public static final int OPACITY_FILTER = 43;//不透明度
        public static final int OVERLAY_BLEND_FILTER = 44;//叠加,通常用于创建阴影效果
        public static final int POSTERIZE_FILTER = 45;//色调分离,形成噪点效果
        public static final int RGB_DILATION_FILTER = 46;//RGB扩展边缘模糊,有色彩
        public static final int RGB_FILTER = 47;//RGB
        public static final int SCREEN_BLEND_FILTER = 48;//屏幕包裹,通常用于创建亮点和镜头眩光
        public static final int SHARPEN_FILTER = 49;//锐化
        public static final int SKETCH_FILTER = 50;//素描
        public static final int SMOOTH_TOON_FILTER = 51;//相比上面的效果更细腻,上面是粗旷的画风
        public static final int SOBEL_EDGE_DETECTION_FILTER = 52;//Sobel边缘检测算法(白边,黑内容,有点漫画的反色效果)
        public static final int SOFT_LIGHT_BLEND_FILTER = 53;//柔光混合
        public static final int SOURCE_OVER_BLEND_FILTER = 54;//源混合
        public static final int SPHERE_REFRACTION_FILTER = 55;//球形折射,图形倒立
        public static final int SUBTRACT_BLEND_FILTER = 56;//差值混合,通常用于创建两个图像之间的动画变暗模糊效果
        public static final int SWIRL_FILTER = 57;//漩涡,中间形成卷曲的画面
        public static final int THRESHOLD_EDGE_DETECTION_FILTER = 58;//阈值边缘检测(效果与上差别不大)
        public static final int TONE_CURVE_FILTER = 59;//色调曲线
        public static final int TOON_FILTER = 60;//卡通效果(黑色粗线描边)
        public static final int TRANSFORM_FILTER = 61;//形状变化
        public static final int VIGNETTE_FILTER = 62;//晕影,形成黑色圆形边缘,突出中间图像的效果
        public static final int WHITE_BALANCE_FILTER = 63;//白平衡
    
        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();
                    break;
                case ALPHA_BLEND_FILTER:
                    mGPUImageFilter = new GPUImageAlphaBlendFilter();
                    break;
                case BRIGHTNESS_FILTER:
                    mGPUImageFilter = new GPUImageBrightnessFilter();
                    break;
                case EXPOSURE_FILTER:
                    mGPUImageFilter = new GPUImageExposureFilter();
                    break;
                case CONTRAST_FILTER:
                    mGPUImageFilter = new GPUImageContrastFilter();
                    break;
                case SATURATION_FILTER:
                    mGPUImageFilter = new GPUImageSaturationFilter();
                    break;
                case GAMMA_FILTER:
                    mGPUImageFilter = new GPUImageGammaFilter();
                    break;
                case BULGE_DISTORTION_FILTER:
                    mGPUImageFilter = new GPUImageBulgeDistortionFilter();
                    break;
                case CGA_COLOR_SPACE_FILTER:
                    mGPUImageFilter = new GPUImageCGAColorspaceFilter();
                    break;
                case CHROMA_KEY_BLENDF_ILTER:
                    mGPUImageFilter = new GPUImageChromaKeyBlendFilter();
                    break;
                case COLOR_BURN_BLEND_FILTER:
                    mGPUImageFilter = new GPUImageColorBurnBlendFilter();
                    break;
                case COLOR_DODGE_BLEND_FILTER:
                    mGPUImageFilter = new GPUImageColorDodgeBlendFilter();
                    break;
                case COLOR_INVERT_FILTER:
                    mGPUImageFilter = new GPUImageColorInvertFilter();
                    break;
                case CROSS_HATCH_FILTER:
                    mGPUImageFilter = new GPUImageCrosshatchFilter();
                    break;
                case DARKEN_BLEND_FILTER:
                    mGPUImageFilter = new GPUImageDarkenBlendFilter();
                    break;
                case DIFFERENCE_BLEND_FILTER:
                    mGPUImageFilter = new GPUImageDifferenceBlendFilter();
                    break;
                case DILATION_FILTER:
                    mGPUImageFilter = new GPUImageDilationFilter();
                    break;
                case DISSOLVE_BLEND_FILTER:
                    mGPUImageFilter = new GPUImageDissolveBlendFilter();
                    break;
                case DIVIDE_BLEND_FILTER:
                    mGPUImageFilter = new GPUImageDivideBlendFilter();
                    break;
                case EMBOSS_FILTER:
                    mGPUImageFilter = new GPUImageEmbossFilter();
                    break;
                case EXCLUSION_BLEND_FILTER:
                    mGPUImageFilter = new GPUImageExclusionBlendFilter();
                    break;
                case FALSE_COLOR_FILTER:
                    mGPUImageFilter = new GPUImageFalseColorFilter();
                    break;
                case GLASS_SPHERE_FILTER:
                    mGPUImageFilter = new GPUImageGlassSphereFilter();
                    break;
                case GRAYS_CALE_FILTER:
                    mGPUImageFilter = new GPUImageGrayscaleFilter();
                    break;
                case HALF_TONE_FILTER:
                    mGPUImageFilter = new GPUImageHalftoneFilter();
                    break;
                case HARD_LIGHT_BLEND_FILTER:
                    mGPUImageFilter = new GPUImageHardLightBlendFilter();
                    break;
                case HAZE_FILTER:
                    mGPUImageFilter = new GPUImageHazeFilter();
                    break;
                case HIGH_LIGHT_SHADOW_FILTER:
                    mGPUImageFilter = new GPUImageHighlightShadowFilter();
                    break;
                case HUE_FILTER:
                    mGPUImageFilter = new GPUImageHueFilter();
                    break;
                case KUWAHARA_FILTER:
                    mGPUImageFilter = new GPUImageKuwaharaFilter();
                    break;
                case LEVELS_FILTER:
                    mGPUImageFilter = new GPUImageLevelsFilter();
                    break;
                case LIGHTEN_BLEND_FILTER:
                    mGPUImageFilter = new GPUImageLightenBlendFilter();
                    break;
                case LOOKUP_FILTER:
                    mGPUImageFilter = new GPUImageLookupFilter();
                    break;
                case LUMINANCE_THRESHOLD_FILTER:
                    mGPUImageFilter = new GPUImageLuminanceThresholdFilter();
                    break;
                case MONO_CHROME_FILTER:
                    mGPUImageFilter = new GPUImageMonochromeFilter();
                    break;
                case MULTIPLY_BLEND_FILTER:
                    mGPUImageFilter = new GPUImageMultiplyBlendFilter();
                    break;
                case NONMAXIMUM_SUPPRESSION_FILTER:
                    mGPUImageFilter = new GPUImageNonMaximumSuppressionFilter();
                    break;
                case NORMAL_BLEND_FILTER:
                    mGPUImageFilter = new GPUImageNormalBlendFilter();
                    break;
                case OPACITY_FILTER:
                    mGPUImageFilter = new GPUImageOpacityFilter();
                    break;
                case OVERLAY_BLEND_FILTER:
                    mGPUImageFilter = new GPUImageOverlayBlendFilter();
                    break;
                case POSTERIZE_FILTER:
                    mGPUImageFilter = new GPUImagePosterizeFilter();
                    break;
                case RGB_DILATION_FILTER:
                    mGPUImageFilter = new GPUImageRGBDilationFilter();
                    break;
                case RGB_FILTER:
                    mGPUImageFilter = new GPUImageRGBFilter();
                    break;
                case SCREEN_BLEND_FILTER:
                    mGPUImageFilter = new GPUImageScreenBlendFilter();
                    break;
                case SHARPEN_FILTER:
                    mGPUImageFilter = new GPUImageSharpenFilter();
                    break;
                case SKETCH_FILTER:
                    mGPUImageFilter = new GPUImageSketchFilter();
                    break;
                case SMOOTH_TOON_FILTER:
                    mGPUImageFilter = new GPUImageSmoothToonFilter();
                    break;
                case SOBEL_EDGE_DETECTION_FILTER:
                    mGPUImageFilter = new GPUImageSobelEdgeDetectionFilter();
                    break;
                case SOFT_LIGHT_BLEND_FILTER:
                    mGPUImageFilter = new GPUImageSoftLightBlendFilter();
                    break;
                case SOURCE_OVER_BLEND_FILTER:
                    mGPUImageFilter = new GPUImageSourceOverBlendFilter();
                    break;
                case SPHERE_REFRACTION_FILTER:
                    mGPUImageFilter = new GPUImageSphereRefractionFilter();
                    break;
                case SUBTRACT_BLEND_FILTER:
                    mGPUImageFilter = new GPUImageSubtractBlendFilter();
                    break;
                case SWIRL_FILTER:
                    mGPUImageFilter = new GPUImageSwirlFilter();
                    break;
                case THRESHOLD_EDGE_DETECTION_FILTER:
                    mGPUImageFilter = new GPUImageThresholdEdgeDetectionFilter();
                    break;
                case TONE_CURVE_FILTER:
                    mGPUImageFilter = new GPUImageToneCurveFilter();
                    break;
                case TOON_FILTER:
                    mGPUImageFilter = new GPUImageToonFilter();
                    break;
                case TRANSFORM_FILTER:
                    mGPUImageFilter = new GPUImageTransformFilter();
                    break;
                case VIGNETTE_FILTER:
                    mGPUImageFilter = new GPUImageVignetteFilter();
                    break;
                case WHITE_BALANCE_FILTER:
                    mGPUImageFilter = new GPUImageWhiteBalanceFilter();
                    break;
            }
    
            return mGPUImageFilter;
        }
    
    }
    
    

    项目github地址

    相关文章

      网友评论

        本文标题:GpuImage 在Android 上的应用以及各种效果参照表

        本文链接:https://www.haomeiwen.com/subject/ewwbtltx.html