2016-05-05 7 views
0

フィルタを適用した画像または別の画像上に画像をスライドさせようとしています。目的c - 画像上に画像/フィルタをスライドさせる

- (void)applyBWFilter { 
    UIImage *img = [_images peak]; 

    // Add B&W filter 
    // Create image rectangle with current image width/height 
    CGRect imageRect = CGRectMake(0, 0, img.size.width, img.size.height); 

    // Grayscale color space 
    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceGray(); 

    // Create bitmap content with current image size and grayscale colorspace 
    CGContextRef context = CGBitmapContextCreate(nil, img.size.width, img.size.height, 8, 0, colorSpace, kCGImageAlphaNone); 

    // Draw image into current context, with specified rectangle 
    // using previously defined context (with grayscale colorspace) 
    CGContextDrawImage(context, imageRect, [img CGImage]); 

    // Create bitmap image info from pixel data in current context 
    CGImageRef imageRef = CGBitmapContextCreateImage(context); 

    // Create a new UIImage object 
    self.mainImage.image = [UIImage imageWithCGImage:imageRef]; 

    // Release colorspace, context and bitmap information 
    CGColorSpaceRelease(colorSpace); 
    CGContextRelease(context); 
    CFRelease(imageRef); 
} 
:私は現在、私は、元の画像(self.mainImage.image)とのUIViewを持っている、と私は次のコードでフィルタを作成し、私は Snap chat filter example

を行うにしようとしています何の映像が含まれていました

例のように新しいイメージを古いイメージにスライドさせるにはどうすればよいですか?

答えて

0

これを行うにはいくつかの方法があります。おそらく、最も簡単なのは最初に置換画像を生成することでしょう。それをイメージビューにインストールし、それを既存のイメージビューの上に置きます。新しい「フィルタ適用済み」画像ビューのマスクレイヤーと同じサイズのCAShapeLayerを追加します。まず空のシェイプレイヤーから始めます。 UIBezierPathのCGPathをシェイプレイヤーのシェイプとして不透明な矩形を追加しますが、矩形の位置を画面外にずらして表示しないようにしてください。

最後に、矩形のパスを移動してイメージの内容を塗りつぶすと、シェイプレイヤーに変更を適用します。

空のシェイプレイヤーは、最初に画像を完全にマスクします。不透明な矩形のシェイプを場所にアニメートすると、フィルタリングされたイメージがアニメーション化されて表示されます。

関連する問題