noahsark769/cifilter.app

Potentially add Apple internal filters

frankschlegel opened this issue · 2 comments

Through a question on StackOverflow I learned that the internal filters that are part of the CIImage.autoAdjustmentFilters() can actually be initialized independently by their name.
Digging a bit deeper I found that there are a lot of interesting internal filters, all of them belonging to the CICategoryApplePrivate category. Here is a list retrieved by CIFilter.filterNames(inCategory: "CICategoryApplePrivate"):

  • CIAppleSmithGossettScale
  • CIAreaMinMaxNormalize
  • CIAreaMinMaxRedNormalize
  • CIAreaRedCentroid
  • CIAreaRedRadialCentroid
  • CIASG50Percent
  • CIASG60Percent
  • CIASG66Percent
  • CIASG75Percent
  • CIASG80Percent
  • CICheapBilateral
  • CICheapBlur
  • CICheapMorphology
  • CICheatBlur
  • CICircleGenerator
  • CIColorBalance
  • CIColorPolynomialInverse
  • CIContrastEnhancer
  • CIDepthEffectApplyBlurMap
  • CIDepthEffectMakeBlurMap
  • CIDesaturateShadows
  • CIDisparityRefinement
  • CIDynamicFood
  • CIDynamicRender
  • CIFaceBalance
  • CIFocalPlane
  • CIGaussianBlurXY
  • CIHardMixBlendMode
  • CIHighKey
  • CIInpaintingFilter
  • CIIntegralImage
  • CILinearLightBlendMode
  • CIMattingSolver
  • CIMirror
  • CIMorphologyLaplacian
  • CIOpacity
  • CIPaperWash
  • CIPassThroughColorFilter
  • CIPassThroughGeneralAltFilter
  • CIPassThroughGeneralFilter
  • CIPassThroughIntermediateFilter
  • CIPassThroughSelectFrom3
  • CIPassThroughWarpFilter
  • CIPercentileRed
  • CIPhotoGrain
  • CIPlusDarkerCompositing
  • CIPlusLighterCompositing
  • CIPortraitEffectBlack
  • CIPortraitEffectBlackoutMono
  • CIPortraitEffectCommercial
  • CIPortraitEffectContour
  • CIPortraitEffectContourV2
  • CIPortraitEffectLight
  • CIPortraitEffectLightV2
  • CIPortraitEffectStage
  • CIPortraitEffectStageMono
  • CIPortraitEffectStageMonoV2
  • CIPortraitEffectStageV2
  • CIPortraitEffectStageWhite
  • CIPortraitEffectStudio
  • CIPortraitEffectStudioV2
  • CIPremultiply
  • CIProSharpenEdges
  • CIPseudoMedian
  • CIRectangleGenerator
  • CIRedEyeCorrections
  • CIRingBlur
  • CISimpleTile
  • CISingleChannelColorMap
  • CISkyAndGrassAdjust
  • CISmartBlackAndWhite
  • CISmartColorFilter
  • CISmartGradient
  • CISmartToneFilter
  • CISoftCubicUpsample
  • CIStretch
  • CIUnpremultiply
  • CIVariableBoxBlur
  • CIVividLightBlendMode
  • CIWrapMirror
  • CUIInnerBevelEmbossFilter
  • CUIInnerGlowOrShadowFilter
  • CUIOuterBevelEmbossFilter
  • CUIOuterGlowOrShadowFilter
  • CUIScaleClampFilter
  • CUIShapeEffectBlur1

Their attributes also list their parameters, though they are not documented very well. But I think they would make a nice addition to CIFilter.io regardless.

It's an interesting idea! I'd say this makes more sense for an explanatory blog post or something, though - I assume that because these are filters are private, they're subject to change or removal at any time, so they're never safe to use in an app. Would definitely accept a PR to have a flag in the app for including these filters in the json output so you could view them more easily, though! Or even an article on a separate page on the site that goes through them

I noticed in that stackoverflow that some of these filters are actually listed, though - maybe we could append the filters returned from autoAdjustmentFilters to the cifilter.io json or something? Those are relatively public and documented, so they probably make sense to include