2017-02-24 5 views
0

enter image description hereUIImageをカスタムパスにトリミングし、正しい解像度を維持しますか?

私はここに「メイン」と呼ぶことにしますビュー(青い背景が...)、メインに私はその後、回転UIImageView、パンとスケールを追加しました。メインでは、クロッピングエリアを示す別のサブビューがあります。より暗い領域の下で何かが切り取られる必要があります。

この状態から切り取った画像を正しく作成する方法を理解しようとしています。私は、結果のイメージは次のようになりたい:

enter image description here

私は画像の解像度を維持することを確認します。

私はUIImageViewのlayer.maskプロパティを使用する方法を理解しようとしました。いくつかのフィードバックの後、私は青いビューで別のビュー(B)を持つことができたと思います.Bで私はイメージビューを追加するので、Bのフレームがクロップマスクオーバーレイのrectと一致することを確認します。それはうまくいくと思いますか?唯一のことは、私が決断を失わないようにしたいということです。

だから、以前の私はこれを試してみました:

maskShape.frame = imageView.bounds 
maskShape.path = UIBezierPath(rect: CGRect(x: 20, y: 20, width: 200, height: 200)).cgPath 
imageView.layer.mask = maskShape 

RECTは単なるテストRECTた画像がそのパスにクロップされるだろうが、私はこのすべてからUIImageを取得する方法がわかりませんでした

私はmarcoが提案した方法を実装しました。解像度を維持する以外はすべて動作します。

私はビューのインクルードのスクリーンショットを取るために、このコールを使用するには、画像が含まれていると私はそれが限界にクリップがあります。

public func renderToImage(afterScreenUpdates: Bool = false) -> UIImage { 
    let rendererFormat = UIGraphicsImageRendererFormat.default() 
    rendererFormat.opaque = isOpaque 
    let renderer = UIGraphicsImageRenderer(size: bounds.size, format: rendererFormat) 

    let snapshotImage = renderer.image { _ in 
     drawHierarchy(in: bounds, afterScreenUpdates: afterScreenUpdates) 
    } 
    return snapshotImage 
} 

私が得る画像は正しいですが、1、私のようにシャープではありません作物。

私は解像度を高く保つことができますか?

+0

私はあなたに簡単な答えを与えるのを助けるためにあなたの質問を更新してください:1:何を試しましたか2:あなたの結果は何ですか3:あなたが得る結果。たぶんそれのスクリーンショットイメージ。 –

答えて

0

イメージを保持するビューでは、clipsToBoundstrueに設定する必要があります。私がうまくいけば分かりませんが、それはあなたの "トリミングエリア"だと思います。

+0

画像を保持するビューは、フルスクリーンの青いビューです。それから、画像があるUIImageViewがあります...だから、あなたが何を意味するのか分かりません。私は解決策を維持する作者UIImageViewを得ることができる必要があり、それは私が掲示したもののように見える... – zumzum

+1

@zumzum私はよくあなたがビューであるトリミングエリアを持っていると理解していますか?だから私はあなたがその作付面積の中にイメージビューを持っていると思う。そうですか?その後、そのクロッピングエリアにクリップを適用することができます。ビュー階層でない場合は、クロップ領域(2つの黒いビューの間)のビュー内でイメージビューを移動し、クリップビューを適用すると、 –

+0

の画像が表示されるので、意味が分かります理にかなっている。それから、コンテキスト内でレンダリングする画像ビューを含むビューを尋ねることができます。それは画像の解像度を保つだろうか?言い換えれば、私は解像度を緩和したくない... – zumzum

関連する問題