CALayerとUIImageを使用してSwiftで画像をマスキングする

user2732722

私はSwiftでプログラミングしています。CALayerとUIImageを使用して画像をマスクしたい。プログラムでマスク画像を作成しています。作成されたマスク画像はUIImageであり、単独で表示すると正常に機能します。でもマスクとして使うと画面全体が白くなります。私の問題はCALayerオブジェクトの構成にあると思われます。よろしくお願いします。ありがとう!

class ViewController: UIViewController {

    @IBOutlet weak var imageView: UIImageView!

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        var maskImageSize = CGSizeMake(self.imageView.frame.width, self.imageView.frame.height)
        UIGraphicsBeginImageContextWithOptions(maskImageSize, false, 0.0)

        var color = UIColor(white: 1.0, alpha: 1.0)
        color.setFill()
        var rect = CGRectMake(0, 0, self.imageView.frame.width, self.imageView.frame.height)
        UIRectFill(rect)

        color = UIColor(white: 0.0, alpha: 1.0)
        color.setFill()
        rect = CGRectMake((self.imageView.frame.width/2)-100, (self.imageView.frame.height/2)-100, 200, 200)
        UIRectFill(rect)

        var maskImage = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()

        var maskLayer = CALayer()
        maskLayer.contents = maskImage
        maskLayer.contentsRect = CGRectMake(0, 0, self.imageView.bounds.width, self.imageView.bounds.height)


        self.imageView.image = UIImage(named: "pictobemasked.png")

        self.imageView.layer.mask = maskLayer;
    }

}
マット

残念ながら、あなたはかなりひどい質問をしました-あなたは実際に何をしようとしているのかを言っていません!ただし、マスクを使用して画像ビューに長方形の穴を開けようとしているように見えます。もしそうなら、あなたのコードには少なくとも3つの大きな欠陥があります。

  • コードが機能しない理由の1つは、マスクが色ではなく透明度に基づいていることです。不透明な白と不透明な黒を使用していますが、どちらも不透明なので、違いはありません。次のようにするには、2つの色が必要です。

     var color = UIColor(white: 1.0, alpha: 1.0)
    // ... and then, later ...
    color = UIColor(white: 1.0, alpha: 0.0)
    
  • 2番目の問題は、レイヤーにサイズがないことです。あなたはそれに1つを与える必要があります:

    var maskLayer = CALayer()
    maskLayer.frame = CGRectMake(
        0, 0, self.imageView.bounds.width, self.imageView.bounds.height)
    
  • 3番目の最大の問題は、マスク画像を抽出するのを忘れたため、マスク画像がマスクレイヤーに入らないことですCGImage

    maskLayer.contents = maskImage.CGImage
    

contentsを抽出せずにUIImageに設定するCGImage、画像がサイレントにレイヤーに入るのに失敗するため、最後の1つは本当にキラーですエラーメッセージ、クラッシュ、画像はありません。

コードにこれらの3つの修正を加えることで、マスクに画像に長方形の穴を開けさせることができました。したがって、それがあなたの目的である場合、それらの変更はそれを達成します。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

UWP別の画像をマスクとして使用して画像をマスキングする

分類Dev

画像のフル解像度でbezierpathを使用して画像をマスキングする

分類Dev

画像のフル解像度でbezierpathを使用して画像をマスキングする

分類Dev

matlabでバイナリマスクコードを使用してRGB画像をマスキングする

分類Dev

カスタムペインターを使用してFlutterで2つの画像をマスキングする

分類Dev

javascriptで画像をキャンバスとして使用する方法

分類Dev

AutoLayoutを使用してUILabelでUIViewをマスキングする

分類Dev

UIViewでカスタムCALayerをバッキングレイヤーとして使用するにはどうすればよいですか?

分類Dev

別のCALayerマスクとして使用するためにCALayerをサブクラス化する方法は?

分類Dev

表示時に2Dマスクエラーを使用してBGR画像をマスキングする

分類Dev

CALayerでスライスした画像を使用する方法

分類Dev

画像グラフィックコンテキストを変換した後、drawAtPointを使用してUIImageを描画する方法

分類Dev

条件を介してピクセルを操作することによる画像のマスキング

分類Dev

ダブルバッファリングを使用してキャンバスに画像を描画すると、完全な画像を取得できませんか?

分類Dev

SwiftでマスクするUIImageをトリミングする方法

分類Dev

Pythonでマスキングを使用してnumpy配列を分割する

分類Dev

マウスをドラッグしてHTMLキャンバス内で画像を移動する

分類Dev

画像とテキストをマージして、Swift4で別の画像を作成します

分類Dev

SKSpriteNodeを液体としてマスキングする

分類Dev

折れ線グラフでテキストをポイント マーカーとして使用する

分類Dev

画像マスキングと新しいUIImageの作成

分類Dev

インテントを使用してピンタレストで画像とテキストを共有する方法

分類Dev

UIImageViewの上にあるSwiftでマスクされたレイヤーをUIImageとして取得する

分類Dev

UIImage pngData()を使用したCGImageマスキング

分類Dev

ARKit –CALayerを使用してSCNNodeにGIF画像をロードすると正しくレンダリングされない

分類Dev

CIDetectorとSwiftを使用して画像で検出された長方形をトリミングする方法

分類Dev

Androidでキャンバスとビットマップを使用して、この画像を取得するにはどうすればよいですか?

分類Dev

JavaFXでMouseEventとMouseClickedを使用してキャンバス画像を選択して移動する

分類Dev

OpenCVとマスクを使用して画像をマージする

Related 関連記事

  1. 1

    UWP別の画像をマスクとして使用して画像をマスキングする

  2. 2

    画像のフル解像度でbezierpathを使用して画像をマスキングする

  3. 3

    画像のフル解像度でbezierpathを使用して画像をマスキングする

  4. 4

    matlabでバイナリマスクコードを使用してRGB画像をマスキングする

  5. 5

    カスタムペインターを使用してFlutterで2つの画像をマスキングする

  6. 6

    javascriptで画像をキャンバスとして使用する方法

  7. 7

    AutoLayoutを使用してUILabelでUIViewをマスキングする

  8. 8

    UIViewでカスタムCALayerをバッキングレイヤーとして使用するにはどうすればよいですか?

  9. 9

    別のCALayerマスクとして使用するためにCALayerをサブクラス化する方法は?

  10. 10

    表示時に2Dマスクエラーを使用してBGR画像をマスキングする

  11. 11

    CALayerでスライスした画像を使用する方法

  12. 12

    画像グラフィックコンテキストを変換した後、drawAtPointを使用してUIImageを描画する方法

  13. 13

    条件を介してピクセルを操作することによる画像のマスキング

  14. 14

    ダブルバッファリングを使用してキャンバスに画像を描画すると、完全な画像を取得できませんか?

  15. 15

    SwiftでマスクするUIImageをトリミングする方法

  16. 16

    Pythonでマスキングを使用してnumpy配列を分割する

  17. 17

    マウスをドラッグしてHTMLキャンバス内で画像を移動する

  18. 18

    画像とテキストをマージして、Swift4で別の画像を作成します

  19. 19

    SKSpriteNodeを液体としてマスキングする

  20. 20

    折れ線グラフでテキストをポイント マーカーとして使用する

  21. 21

    画像マスキングと新しいUIImageの作成

  22. 22

    インテントを使用してピンタレストで画像とテキストを共有する方法

  23. 23

    UIImageViewの上にあるSwiftでマスクされたレイヤーをUIImageとして取得する

  24. 24

    UIImage pngData()を使用したCGImageマスキング

  25. 25

    ARKit –CALayerを使用してSCNNodeにGIF画像をロードすると正しくレンダリングされない

  26. 26

    CIDetectorとSwiftを使用して画像で検出された長方形をトリミングする方法

  27. 27

    Androidでキャンバスとビットマップを使用して、この画像を取得するにはどうすればよいですか?

  28. 28

    JavaFXでMouseEventとMouseClickedを使用してキャンバス画像を選択して移動する

  29. 29

    OpenCVとマスクを使用して画像をマージする

ホットタグ

アーカイブ