1

アプリで一連のCIFilterフィルターを使用して、明るさ、彩度などを調整していますが、正常に機能しています。に問題がありinputSharpnessます。シャープネス スライダーに触れると、画像が消えてしまいます。関連コード:

UIImage *aUIImage = [imageView image];
CGImageRef aCGImage = aUIImage.CGImage;
aCIImage = [CIImage imageWithCGImage:aCGImage];

//Create context
context = [CIContext contextWithOptions:nil];
sharpFilter = [CIFilter filterWithName:@"CIAttributeTypeScalar" keysAndValues: @"inputImage", aCIImage, nil];

....

- (IBAction)sharpSliderChanged:(id)sender
{

    //Set filter value
    [sharpFilter setValue:[NSNumber numberWithFloat:sharpSlider.value] forKey:@"inputSharpness"];

    //Convert CIImage to UIImage
    outputImage = [sharpFilter outputImage];
    CGImageRef cgimg = [context createCGImage:outputImage fromRect:[outputImage extent]];
    newUIImage = [UIImage imageWithCGImage:cgimg];
    CGImageRelease(cgimg);

    //add image to imageView
    [imageView setImage:newUIImage];

}
4

1 に答える 1

1

同様の質問の投稿を読みました。考えられる解決策は、提供するUIImage効果のカテゴリを追加することでした。ここでの唯一の違いは、CIColorControlsパラメータinputSharpnessの1つとCISharpenLuminanceフィルタを使用する必要があることです。

あなたの質問に戻る:あなたのコメントから、あなたはあなたのフィルターをどのように初期化するかについていくつかの問題を抱えているようです。私は公式ドキュメントを見て、CISharpenLuminance代わりに初期化フェーズで使用します。ただし、iOS6でのみ使用できます。

編集 私が言ったように、コアイメージを使い続けたい場合は、必要な機能はiOS6でのみ利用できます。iOS 5との互換性が必要な場合は、サードパーティのlib:bradlarsonのGPUライブラリを使用することをお勧めします。

于 2012-12-28T14:47:26.257 に答える