GpuImage 在Android 上的应用以及各种效果参照表
- Step 1: GpuImage 集成
implementation 'jp.co.cyberagent.android:gpuimage:2.0.4'
- Step 2: 布局中使用
在布局中加上GPUImageView,为了显示处理后的图片载体
<jp.co.cyberagent.android.gpuimage.GPUImageViewandroid: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.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;//RGBpublic 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 上的应用以及各种效果参照表相关推荐
- Android上webview界面切换动画效果
使用Android上的webview控件时需要跳转到下一个html时,要求当前界面缓缓的向左移动,下一个html界面缓缓的从右边出现.这与常规动画不同,一般方式将无法制作出动画.主要实现方法可以先保存 ...
- Android图像处理之GPUImage for Android
[url=https://github.com/BradLarson/GPUImage]GPUImage[/url] 是iOS下一个开源的基于GPU的图像处理库,提供各种各样的图像处理滤镜,并且支持照 ...
- android上传本地图片到服务器上,Android使用post方式上传图片到服务器的方法
本文实例讲述了Android使用post方式上传图片到服务器的方法.分享给大家供大家参考,具体如下: /** * 上传文件到服务器类 * * @author tom */ public class U ...
- 构建node.js基础镜像_在Android上构建Node.js应用程序
构建node.js基础镜像 by Aurélien Giraud 通过AurélienGiraud 在Android上构建Node.js应用程序-第1部分:Termux,Vim和Node.js (Bu ...
- 如何为Android上的产品设计一款合适的图标
如 果你已经完成了你的app,你一定会马上向其它人宣布这件事情.但是你需要注意一个很重要的问题,那就是app的图标.你的图标可能在项目启动之 前就已经设计好了,但我不喜欢这样,如果app没有完成实际上 ...
- Android上的MVP:如何组织显示层的内容
MVP(Model View Presenter)模式是著名的MVC(Model View Controller)模式的一个演化版本,目前它在Android应用开发中越来越重要了,大家也都在讨论关于M ...
- android上的i-jetty (1)环境搭建
android上的i-jetty (1)环境搭建 android ftp swiftp http://code.google.com/p/swiftp/ 介绍下如果把android设备作为一个web ...
- 在Android上实现HttpServer
本文讲的是在Android上实现HttpServer,在最近的项目中因为要用Android作为一个服务器去做一个实时接收数据的功能,所以这个时候就要去做一个Android本地的微型服务器. 那么此时我 ...
- 安卓平台运行python_在 android 上运行 python 的方法
android官方目前没有支持在android设备运行python,但是网上有一些项目组做了这个事情:http://geeknizer.com/install-run-python-apps-scri ...
最新文章
- php表单偶数变颜色,利用CSS3 nth-child()选择器 实现表格奇偶行变色
- cmd命令简单别木马的蛛丝马迹
- 用js判断时间的先后顺序
- centos下部署启动elasticsearch错误集合与解决方案
- HTML 5 input type 属性
- DM365 u-boot 启动分析
- springboot, thymeleaf 教你快速搭建网站
- springmvc 响应封装_SpringMVC 封装返回结果对象
- .Net中加密解密相关知识
- 通过TXT文件批量生成PDF417码
- 计算机一级两列怎么筛选,怎么筛选Excel软件两个表格里相同的数据
- QGC 谷歌中国地图 火星坐标系 转换
- Beyond Compare 4 “授权秘钥已被吊销“ 的解决办法
- 【unity地编】unity制作场景的流程和要点简要
- 808通讯协议技术规范消息ID:0x0704数据分析,后附go代码
- 毕业设计开题报告撰写方法
- android系统与苹果手机号码,苹果手机号码怎么导入到手机 苹果手机号码导入到手机的方法步骤【图文教程】...
- 本本CPU控制让游戏3D效果最佳境界
- python读取歌词文本,并显示在图片上,制作视频
- Cesium雷达追踪圆锥体