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

アダムマクマホン

UWPで画像を別の画像のマスクとして使用する方法を知っている人はいますか?私が見ることができる唯一のマスキング機能は、CompositionMaskBrushであり、私が望むことを達成できるとは思いません。私が達成しようとしていることの例は次のとおりです。私は携帯電話のケースの形をした黒一色のPNGを持っています。ユーザーは自分の画像を追加し、それを黒一色のPNGのサイズにクリップしてマスクします。結果として下の画像になります。

どんな助けでも大歓迎です。私は解決策を探すのにかなりの時間を費やしました。

ここに画像の例

アダムマクマホン

これを必要とし、それに答える他の誰かのために投稿するだけでしたが、私はついにWin2DとImageloaderを使用して解決策を見つけることができました。

これがImageLoaderへのリンクです。ドキュメントに記載されているように機能させるには、いくつかのバージョンをロールバックする必要があることに注意してください。以下のリンクは、私が使用しているバージョンへのリンクです。このバージョン以降のものは、これから投稿するサンプルコードでは機能しません。https://www.nuget.org/packages/Robmikh.Util.CompositionImageLoader/0.4.0-alpha

    private Compositor _compositor;
    private IImageLoader _imageLoader;
    private CompositionEffectFactory _effectFactory;

    private async void InitMask()
    {


        // Store our Compositor and create our ImageLoader.
        _compositor = ElementCompositionPreview.GetElementVisual(this).Compositor;
        _imageLoader = ImageLoaderFactory.CreateImageLoader(_compositor);

        // Setup our effect definition. First is the CompositeEffect that will take
        // our sources and produce the intersection of the images (because we selected
        // the DestinationIn mode for the effect). Next we take our CompositeEffect 
        // and make it the source of our next effect, the InvertEffect. This will take 
        // the intersection image and invert the colors. Finally we take that combined 
        // effect and put it through a HueRotationEffect, were we can adjust the colors
        // using the Angle property (which we will animate below). 
        IGraphicsEffect graphicsEffect = new HueRotationEffect
        {
            Name = "hueEffect",
            Angle = 0.0f,
            Source = new InvertEffect
            {
                Source = new CompositeEffect
                {
                    Mode = CanvasComposite.DestinationIn,
                    Sources =
                    {
                        new CompositionEffectSourceParameter("image"),
                        new CompositionEffectSourceParameter("mask")
                    }
                }
            }
        };
        // Create our effect factory using the effect definition and mark the Angle
        // property as adjustable/animatable.
        _effectFactory = _compositor.CreateEffectFactory(graphicsEffect, new string[] { "hueEffect.Angle" });

        // Create MangedSurfaces for both our base image and the mask we'll be using. 
        // The mask is a transparent image with a white circle in the middle. This is 
        // important since the CompositeEffect will use just the circle for the 
        // intersectionsince the rest is transparent.

        var managedImageSurface = await _imageLoader.CreateManagedSurfaceFromUriAsync(new Uri("http://sendus.pics/uploads/" + ImagePass + "/0.png", UriKind.Absolute));
        //var managedImageSurface = await _imageLoader.CreateManagedSurfaceFromUriAsync(new Uri("ms-appx:///Assets/colour.jpg", UriKind.Absolute));
        var managedMaskSurface = await _imageLoader.CreateManagedSurfaceFromUriAsync(new Uri("ms-appx:///" + MaskImage, UriKind.Absolute));

        // Create brushes from our surfaces.
        var imageBrush = _compositor.CreateSurfaceBrush(managedImageSurface.Surface);
        var maskBrush = _compositor.CreateSurfaceBrush(managedMaskSurface.Surface);

        // Create an setup our effect brush.Assign both the base image and mask image
        // brushes as source parameters in the effect (with the same names we used in
        // the effect definition). If we wanted, we could create many effect brushes
        // and use different images in all of them.
        var effectBrush = _effectFactory.CreateBrush();
        effectBrush.SetSourceParameter("image", imageBrush);
        effectBrush.SetSourceParameter("mask", maskBrush);

        // All that's left is to create a visual, assign the effect brush to the Brush
        // property, and attach it into the tree...
        var visual = _compositor.CreateSpriteVisual();

        visual.Size = new Vector2(MaskH, MaskW);
        visual.Offset = new Vector3(0, 300, 0);

        visual.Brush = effectBrush;

        ElementCompositionPreview.SetElementChildVisual(this, visual);
    }

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

画像を別の画像のマスクとして使用する

分類Dev

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

分類Dev

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

分類Dev

固定画像のマスクとしてdivを使用する

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

MATLAB:RGB画像に透明マスクを適用して別の画像とブレンドする

分類Dev

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

分類Dev

マスクを使用して画像の平均を取得する

分類Dev

OpenCV-マスクを使用して画像の一部を別の画像にコピーする方法は?

分類Dev

キャンバスを画像としてUWPに保存する

分類Dev

枕を使用して、Pythonで白黒画像を使用して画像を別の画像にマスクするにはどうすればよいですか?

分類Dev

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

分類Dev

WebGL –背景画像のマスクとしてメッシュを使用する

分類Dev

別の画像に基づいて画像をマスクする

分類Dev

ImageMagickを使用してマスク画像で画像を作成します

分類Dev

PILを使用して透明なPNG画像を別の画像とマージする方法

分類Dev

HTML要素の背景画像としてマスクを使用したSVG

分類Dev

OpenCv C ++で元の画像をマスクとして使用して、画像からロゴを削除します

分類Dev

画像を使用してhtml要素をマスクする方法

分類Dev

マスクされた画像をFITSとして保存する

分類Dev

Pythonイメージングライブラリを使用して1つの画像を別の画像に貼り付けると、「ValueError:不適切な透明度マスク」が発生しますか?

分類Dev

マウスを使用してキャンバス内の画像を回転するには

分類Dev

numpyマスクを使用して画像の楕円を相互に減算する

分類Dev

マウスイベントを使用して画像ボックス内で画像を移動する

分類Dev

画像なしのCSSを使用したdivのクリッピングとマスキング

Related 関連記事

  1. 1

    画像を別の画像のマスクとして使用する

  2. 2

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

  3. 3

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

  4. 4

    固定画像のマスクとしてdivを使用する

  5. 5

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

  6. 6

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

  7. 7

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

  8. 8

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

  9. 9

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

  10. 10

    MATLAB:RGB画像に透明マスクを適用して別の画像とブレンドする

  11. 11

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

  12. 12

    マスクを使用して画像の平均を取得する

  13. 13

    OpenCV-マスクを使用して画像の一部を別の画像にコピーする方法は?

  14. 14

    キャンバスを画像としてUWPに保存する

  15. 15

    枕を使用して、Pythonで白黒画像を使用して画像を別の画像にマスクするにはどうすればよいですか?

  16. 16

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

  17. 17

    WebGL –背景画像のマスクとしてメッシュを使用する

  18. 18

    別の画像に基づいて画像をマスクする

  19. 19

    ImageMagickを使用してマスク画像で画像を作成します

  20. 20

    PILを使用して透明なPNG画像を別の画像とマージする方法

  21. 21

    HTML要素の背景画像としてマスクを使用したSVG

  22. 22

    OpenCv C ++で元の画像をマスクとして使用して、画像からロゴを削除します

  23. 23

    画像を使用してhtml要素をマスクする方法

  24. 24

    マスクされた画像をFITSとして保存する

  25. 25

    Pythonイメージングライブラリを使用して1つの画像を別の画像に貼り付けると、「ValueError:不適切な透明度マスク」が発生しますか?

  26. 26

    マウスを使用してキャンバス内の画像を回転するには

  27. 27

    numpyマスクを使用して画像の楕円を相互に減算する

  28. 28

    マウスイベントを使用して画像ボックス内で画像を移動する

  29. 29

    画像なしのCSSを使用したdivのクリッピングとマスキング

ホットタグ

アーカイブ