顔を切り取る

1092 ワード

最近新しいappを作ったばかりで、中には顔を裁断する需要があるので、この知っている効果を真似て自分で裁断画像のコントローラを書いて、裁断領域とマスクスタイルの設定をサポートして、ズーム、移動、ダブルクリックして拡大して縮小します.共有して開発効率を高めたい.

效果如下


test.gif
test2.gif

使用方法

    //     ,      ,  ,       
    CGRect clipFrame = CGRectMake(0, (ScreenH - ScreenW) * 0.5, ScreenW, ScreenW);
    HTClipImageController *controller = [[HTClipImageController alloc] initWithImage:image ClipFrame:clipFrame IsRoundedCorner:YES];
    //     ,      
    controller.delegate = self;
    [picker pushViewController:controller animated:true];

実装の原理

  • 拡大・ドラッグが必要であることを考慮してUIScrollView+UIImageView
  • を用いた
  • 裁断領域の大きさと原図の大きさから、ピクチャのスケーリング後のimageViewのframeとscrollViewのcontentsizeを算出し、offsetを調整してピクチャが中心位置
  • に位置するようにする.
  • 裁断領域frameに基づいて、テンプレートサイズ、位置、スタイル
  • を設定する.
  • スケーリングのプロキシメソッドでは、新しいimageViewのframeに従ってcontentSizeとoffset
  • を設定する.
  • クリック決定方法では、トリミング領域frameと現在のimageViewのframeに基づいて、ピクチャを切り取り、プロキシメソッド
  • を呼び出す.

    demoアドレス


    何か質問があったら下記でコメントして交流して、役に立つと感じたらstarにお願いしますhttps://github.com/JTWang4778/PickAndClipImage