3

Nokia Imaging SDK をいじってみました。今、私は既に存在する画像 (私のビジュアル スタジオ ソリューションのフォルダー内) を持っているという問題に直面しており、この画像をNokia Imaging SDKのBlendFilterクラスで使用するために変換したいと考えています。ただし、使い方がわかりません。

ストリーム内の既存の画像を変換し、それをパラメーターとしてBlendFilterコンストラクターに渡そうとしていました。しかし、運ではありません。コンパイラは、最適なオーバーロード メソッド マッチ ... に無効な引数が含まれていると言っています。

これは、既存の画像をストリームにロードしようとしている方法です:

Image image = new Image();
image.Source = new BitmapImage(new Uri("/Images/Template3.2.png", UriKind.Relative));

BitmapImage bitImage = new BitmapImage(new Uri("/Images/Template3.2.png", UriKind.Relative));

WriteableBitmap Bitmap = new WriteableBitmap(bitImage);

その後:

var BlendFilter = new BlendFilter(bitImage, BlendFunction.Add);  --> the compiler error is here

BlendFilterクラスの使い方を知っている人はいますか? どの例も非常に役立ちます。

よろしく!

4

1 に答える 1

5

ブレンド フィルターは、IImageProvider を入力として受け取ります。つまり、任意の X-ImageSource クラスを入力として使用でき、内部ですべての作業を行うことができます。

画像のストリームがある場合は、StreamImageSource を作成し、それを BlendFilter に渡すことをお勧めします。

さまざまな画像ソースのリストは非常に長いので、ドキュメントを調べて、自分に最も適したものを選択することをお勧めします。

以下は、画像のストリームを入力として取り、その上に新しい画像をブレンドする例です。簡単にするために、他の画像は 1 つの色 (ColorImageSource) で塗りつぶされた画像ですが、任意の IImageProvider をソースとして設定できます。最も便利なものを選択してください。

using (var backgroundSource = new StreamImageSource(stream))
using (var filterEffect = new FilterEffect(backgroundSource))
{
    using (BlendFilter blendFilter = new BlendFilter()) 
    {
        var size = new Windows.Foundation.Size(400, 400);
        var color = Windows.UI.Color.FromArgb(250, 128, 255, 200);

        blendFilter.ForegroundSource = new ColorImageSource(size, color);
        blendFilter.BlendFunction = BlendFunction.Add;

        filterEffect.Filters = new[] { blendFilter };

        var result = await new JpegRenderer(filterEffect).RenderAsync();
    }
}
于 2013-12-13T10:30:05.863 に答える