2011年12月25日日曜日

iOS5のビルトインCIFilterリスト

Filtered heart by Sammy Naas
Filtered heart, a photo by Sammy Naas on Flickr.
iOS 5から使用できるようになった CIFilter の名前と、アトリビュートの範囲を調べるための簡単なコードを書きました。
#import <CoreImage/CoreImage.h>  // CoreImage.frameworkはプロジェクトに追加しておくこと

 // どこかのメソッドの中

 // ビルトインフィルター名表示
 NSArray *filters = [CIFilter filterNamesInCategories:[NSArray arrayWithObject:kCICategoryBuiltIn]];
 NSLog(@"kCICategoryBuiltIn = %@",filters);

 // 各フィルターのアトリビュート表示
 for (NSString *filterName in filters) {
  CIFilter *samplef = [CIFilter filterWithName:filterName];
  NSDictionary *attrs = [samplef attributes];
  NSLog(@"Filter <%@> :\n %@",filterName,attrs);
 }

プログラムを実行すると、例えば CIColorControls フィルターの場合、以下のようにログ出力されます。

2011-12-25 23:30:24.831 SampleApp[25317:207] Filter <CIColorControls> :
 {
    CIAttributeFilterCategories =     (
        CICategoryColorAdjustment,
        CICategoryVideo,
        CICategoryStillImage,
        CICategoryInterlaced,
        CICategoryNonSquarePixels,
        CICategoryBuiltIn
    );
    CIAttributeFilterDisplayName = "Color Controls";
    CIAttributeFilterName = CIColorControls;
    inputBrightness =     {
        CIAttributeClass = NSNumber;
        CIAttributeDefault = 0;
        CIAttributeIdentity = 0;
        CIAttributeSliderMax = 1;
        CIAttributeSliderMin = "-1";
        CIAttributeType = CIAttributeTypeScalar;
    };
    inputContrast =     {
        CIAttributeClass = NSNumber;
        CIAttributeDefault = 1;
        CIAttributeIdentity = 1;
        CIAttributeSliderMax = 4;
        CIAttributeSliderMin = 0;
        CIAttributeType = CIAttributeTypeScalar;
    };
    inputImage =     {
        CIAttributeClass = CIImage;
        CIAttributeType = CIAttributeTypeImage;
    };
    inputSaturation =     {
        CIAttributeClass = NSNumber;
        CIAttributeDefault = 1;
        CIAttributeIdentity = 1;
        CIAttributeSliderMax = 2;
        CIAttributeSliderMin = 0;
        CIAttributeType = CIAttributeTypeScalar;
    };
}
これによると、CIColorControls フィルターは、CICategoryColorAdjustment カテゴリー等に属していて、inputBrightness、inputContrast、inputSaturation、inputImage の4つのパラメータを設定できることがわかります。
また、inputBrightness のデフォルト値は 0 で、-1〜1の値を NSNumber 型の変数で設定することができるとわかります。

現在、取得できたフィルターは以下のとおりです。今後、バージョンアップする毎に、内容が変わる可能性があるので注意して下さい。
    CIAdditionCompositing,
    CIAffineTransform,
    CICheckerboardGenerator,
    CIColorBlendMode,
    CIColorBurnBlendMode,
    CIColorControls,
    CIColorCube,
    CIColorDodgeBlendMode,
    CIColorInvert,
    CIColorMatrix,
    CIColorMonochrome,
    CIConstantColorGenerator,
    CICrop,
    CIDarkenBlendMode,
    CIDifferenceBlendMode,
    CIExclusionBlendMode,
    CIExposureAdjust,
    CIFalseColor,
    CIGammaAdjust,
    CIGaussianGradient,
    CIHardLightBlendMode,
    CIHighlightShadowAdjust,
    CIHueAdjust,
    CIHueBlendMode,
    CILightenBlendMode,
    CILinearGradient,
    CILuminosityBlendMode,
    CIMaximumCompositing,
    CIMinimumCompositing,
    CIMultiplyBlendMode,
    CIMultiplyCompositing,
    CIOverlayBlendMode,
    CIRadialGradient,
    CISaturationBlendMode,
    CIScreenBlendMode,
    CISepiaTone,
    CISoftLightBlendMode,
    CISourceAtopCompositing,
    CISourceInCompositing,
    CISourceOutCompositing,
    CISourceOverCompositing,
    CIStraightenFilter,
    CIStripesGenerator,
    CITemperatureAndTint,
    CIToneCurve,
    CIVibrance,
    CIVignette,
    CIWhitePointAdjust

0 件のコメント:

コメントを投稿

Related Posts Plugin for WordPress, Blogger...