代码没有备注,花时间整理了备注,方便快速查找对应的Filter
private static GPUImageFilter createFilterForType(final Context context, final FilterType type) {
switch (type) {
case CONTRAST:
return new GPUImageContrastFilter(2.0f); //对比度
case GAMMA:
return new GPUImageGammaFilter(2.0f); //伽马线
case INVERT:
return new GPUImageColorInvertFilter(); //反色
case PIXELATION:
return new GPUImagePixelationFilter(); //像素
case HUE:
return new GPUImageHueFilter(90.0f); //色度
case BRIGHTNESS:
return new GPUImageBrightnessFilter(1.5f); //亮度
case GRAYSCALE:
return new GPUImageGrayscaleFilter(); //灰度
case SEPIA:
return new GPUImageSepiaFilter(); //褐色(怀旧)
case SHARPEN:
GPUImageSharpenFilter sharpness = new GPUImageSharpenFilter(); //锐化
sharpness.setSharpness(2.0f);
return sharpness;
case SOBEL_EDGE_DETECTION:
return new GPUImageSobelEdgeDetection();
case THREE_X_THREE_CONVOLUTION:
GPUImage3x3ConvolutionFilter convolution = new GPUImage3x3ConvolutionFilter(); //3x3卷积,高亮大色块变黑,加亮边缘、线条等
convolution.setConvolutionKernel(new float[] {
-1.0f, 0.0f, 1.0f,
-2.0f, 0.0f, 2.0f,
-1.0f, 0.0f, 1.0f
});
return convolution;
case EMBOSS:
return new GPUImageEmbossFilter(); //浮雕效果,带有点3d的感觉
case POSTERIZE:
return new GPUImagePosterizeFilter(); //色调分离,形成噪点效果
case FILTER_GROUP:
List<GPUImageFilter> filters = new LinkedList<GPUImageFilter>();
filters.add(new GPUImageContrastFilter());
filters.add(new GPUImageDirectionalSobelEdgeDetectionFilter());
filters.add(new GPUImageGrayscaleFilter());
return new GPUImageFilterGroup(filters);
case SATURATION:
return new GPUImageSaturationFilter(1.0f); //饱和度
case EXPOSURE:
return new GPUImageExposureFilter(0.0f); //曝光
case HIGHLIGHT_SHADOW:
return new GPUImageHighlightShadowFilter(0.0f, 1.0f); //提亮阴影
case MONOCHROME:
return new GPUImageMonochromeFilter(1.0f, new float[]{0.6f, 0.45f, 0.3f, 1.0f}); 单色
case OPACITY:
return new GPUImageOpacityFilter(1.0f); //不透明度
case RGB:
return new GPUImageRGBFilter(1.0f, 1.0f, 1.0f); //RGB
case WHITE_BALANCE:
return new GPUImageWhiteBalanceFilter(5000.0f, 0.0f); //白平横
case VIGNETTE:
PointF centerPoint = new PointF();
centerPoint.x = 0.5f;
centerPoint.y = 0.5f;
return new GPUImageVignetteFilter(centerPoint, new float[] {0.0f, 0.0f, 0.0f}, 0.3f, 0.75f); //晕影,形成黑色圆形边缘,突出中间图像的效果
case TONE_CURVE:
GPUImageToneCurveFilter toneCurveFilter = new GPUImageToneCurveFilter(); //色调曲线
toneCurveFilter.setFromCurveFileInputStream(
context.getResources().openRawResource(R.raw.tone_cuver_sample));
return toneCurveFilter;
case BLEND_DIFFERENCE:
return createBlendFilter(context, GPUImageDifferenceBlendFilter.class); //差异混合,通常用于创建更多变动的颜色
case BLEND_SOURCE_OVER:
return createBlendFilter(context, GPUImageSourceOverBlendFilter.class); //源混合
case BLEND_COLOR_BURN:
return createBlendFilter(context, GPUImageColorBurnBlendFilter.class); //色彩加深混合
case BLEND_COLOR_DODGE:
return createBlendFilter(context, GPUImageColorDodgeBlendFilter.class); //色彩减淡混合
case BLEND_DARKEN:
return createBlendFilter(context, GPUImageDarkenBlendFilter.class); //加深混合,通常用于重叠类型
case BLEND_DISSOLVE:
return createBlendFilter(context, GPUImageDissolveBlendFilter.class); //溶解
case BLEND_EXCLUSION:
return createBlendFilter(context, GPUImageExclusionBlendFilter.class); //排除混合
case BLEND_HARD_LIGHT:
return createBlendFilter(context, GPUImageHardLightBlendFilter.class); //强光混合,通常用于创建阴影效果
case BLEND_LIGHTEN:
return createBlendFilter(context, GPUImageLightenBlendFilter.class); //减淡混合,通常用于重叠类型
case BLEND_ADD:
return createBlendFilter(context, GPUImageAddBlendFilter.class); //通常用于创建两个图像之间的动画变亮模糊效果
case BLEND_DIVIDE:
return createBlendFilter(context, GPUImageDivideBlendFilter.class); //通常用于创建两个图像之间的动画变暗模糊效果
case BLEND_MULTIPLY:
return createBlendFilter(context, GPUImageMultiplyBlendFilter.class); //通常用于创建阴影和深度效果
case BLEND_OVERLAY:
return createBlendFilter(context, GPUImageOverlayBlendFilter.class); //叠加,通常用于创建阴影效果
case BLEND_SCREEN:
return createBlendFilter(context, GPUImageScreenBlendFilter.class); //屏幕包裹,通常用于创建亮点和镜头眩光
case BLEND_ALPHA:
return createBlendFilter(context, GPUImageAlphaBlendFilter.class); //透明混合,通常用于在背景上应用前景的透明度
case BLEND_COLOR:
return createBlendFilter(context, GPUImageColorBlendFilter.class); //颜色混合
case BLEND_HUE:
return createBlendFilter(context, GPUImageHueBlendFilter.class); //色调混合
case BLEND_SATURATION:
return createBlendFilter(context, GPUImageSaturationBlendFilter.class); //饱和度混合
case BLEND_LUMINOSITY:
return createBlendFilter(context, GPUImageLuminosityBlendFilter.class); //光度混合
case BLEND_LINEAR_BURN:
return createBlendFilter(context, GPUImageLinearBurnBlendFilter.class); //线性混合
case BLEND_SOFT_LIGHT:
return createBlendFilter(context, GPUImageSoftLightBlendFilter.class); //柔光混合
case BLEND_SUBTRACT:
return createBlendFilter(context, GPUImageSubtractBlendFilter.class); //差值混合,通常用于创建两个图像之间的动画变暗模糊效果
case BLEND_CHROMA_KEY:
return createBlendFilter(context, GPUImageChromaKeyBlendFilter.class); //色度键混合
case BLEND_NORMAL:
return createBlendFilter(context, GPUImageNormalBlendFilter.class); //正常
case LOOKUP_AMATORKA:
GPUImageLookupFilter amatorka = new GPUImageLookupFilter(); //lookup 色彩调整
amatorka.setBitmap(BitmapFactory.decodeResource(context.getResources(), R.drawable.lookup_amatorka));
return amatorka;
case GAUSSIAN_BLUR:
return new GPUImageGaussianBlurFilter(); //高斯模糊
case CROSSHATCH:
return new GPUImageCrosshatchFilter(); //交叉线阴影,形成黑白网状画面
case BOX_BLUR:
return new GPUImageBoxBlurFilter(); //盒状模糊
case CGA_COLORSPACE:
return new GPUImageCGAColorspaceFilter(); //CGA色彩滤镜,形成黑、浅蓝、紫色块的画面
case DILATION:
return new GPUImageDilationFilter(); //扩展边缘模糊,变黑白
case KUWAHARA:
return new GPUImageKuwaharaFilter(); //桑原(Kuwahara)滤波,水粉画的模糊效果;处理时间比较长,慎用
case RGB_DILATION:
return new GPUImageRGBDilationFilter(); //RGB扩展边缘模糊,有色彩
case SKETCH:
return new GPUImageSketchFilter(); //素描
case TOON:
return new GPUImageToonFilter(); //卡通效果(黑色粗线描边)
case SMOOTH_TOON:
return new GPUImageSmoothToonFilter(); //相比上面的效果更细腻,上面是粗旷的画风
case BULGE_DISTORTION:
return new GPUImageBulgeDistortionFilter(); //凸起失真,鱼眼效果
case GLASS_SPHERE:
return new GPUImageGlassSphereFilter(); //水晶球效果
case HAZE:
return new GPUImageHazeFilter(); //朦胧加暗
case LAPLACIAN:
return new GPUImageLaplacianFilter();
case NON_MAXIMUM_SUPPRESSION:
return new GPUImageNonMaximumSuppressionFilter(); //非最大抑制,只显示亮度最高的像素,其他为黑
case SPHERE_REFRACTION:
return new GPUImageSphereRefractionFilter(); //球形折射,图形倒立
case SWIRL:
return new GPUImageSwirlFilter(); //漩涡,中间形成卷曲的画面
case WEAK_PIXEL_INCLUSION:
return new GPUImageWeakPixelInclusionFilter(); //像素融合
case FALSE_COLOR:
return new GPUImageFalseColorFilter(); //色彩替换(替换亮部和暗部色彩)G
case COLOR_BALANCE:
return new GPUImageColorBalanceFilter(); //色彩平衡
case LEVELS_FILTER_MIN:
GPUImageLevelsFilter levelsFilter = new GPUImageLevelsFilter(); //色阶
levelsFilter.setMin(0.0f, 3.0f, 1.0f);
return levelsFilter;
case HALFTONE:
return new GPUImageHalftoneFilter(); //点染,图像黑白化,由黑点构成原图的大致图形
case BILATERAL_BLUR:
return new GPUImageBilateralFilter(); //双边模糊
case TRANSFORM2D:
return new GPUImageTransformFilter(); //形状变化
default:
throw new IllegalStateException("No filter of that type!");
}
}