1

200x200 の解像度でページの中央に使用しているアーティストのカバー画像があります。この画像を背景にも繰り返したいのですが、ユーザーが色や大きな形状を認識できるように変更します。英語でどの名前がこの効果を持っているのかわかりません。私はブラッグ、スムージングなどの何かを考えています。

このコードブロックは、私が望むことを行うことがわかりました:

coverBitmap.ImageOpened += (s, args) =>
{
  var wb = new WriteableBitmap((BitmapImage)s);
  var newHeight = 800;
  wb = wb.Resize(newHeight, newHeight, WriteableBitmapExtensions.Interpolation.Bilinear);
  wb = wb.Crop(new Rect(160, 0, 480, 800));
  wb = wb.Convolute(WriteableBitmapExtensions.KernelGaussianBlur5x5);
  var brush = new ImageBrush {ImageSource = wb};
  LayoutRoot.Background = brush;
};

問題は、KernelGaussianBlur5x5まだあまりにもシャープ (正確) であることです。19x19 用に独自のマトリックスを作成します。

var array = new[,]
                {
                    {16, 17, 19, 20, 21, 22, 23, 24, 24, 24, 24, 24, 23, 22, 21, 20, 19, 17, 16},
                    {17, 19, 20, 22, 23, 24, 25, 26, 26, 26, 26, 26, 25, 24, 23, 22, 20, 19, 17},
                    {19, 20, 22, 24, 25, 26, 27, 28, 28, 28, 28, 28, 27, 26, 25, 24, 22, 20, 19},
                    {20, 22, 24, 25, 27, 28, 29, 30, 30, 30, 30, 30, 29, 28, 27, 25, 24, 22, 20},
                    {21, 23, 25, 27, 28, 29, 31, 31, 32, 32, 32, 31, 31, 29, 28, 27, 25, 23, 21},
                    {22, 24, 26, 28, 29, 31, 32, 33, 33, 33, 33, 33, 32, 31, 29, 28, 26, 24, 22},
                    {23, 25, 27, 29, 31, 32, 33, 34, 34, 35, 34, 34, 33, 32, 31, 29, 27, 25, 23},
                    {24, 26, 28, 30, 31, 33, 34, 35, 35, 36, 35, 35, 34, 33, 31, 30, 28, 26, 24},
                    {24, 26, 28, 30, 32, 33, 34, 35, 36, 36, 36, 35, 34, 33, 32, 30, 28, 26, 24},
                    {24, 26, 28, 30, 32, 33, 35, 36, 36, 36, 36, 36, 35, 33, 32, 30, 28, 26, 24},
                    {24, 26, 28, 30, 32, 33, 34, 35, 36, 36, 36, 35, 34, 33, 32, 30, 28, 26, 24},
                    {24, 26, 28, 30, 31, 33, 34, 35, 35, 36, 35, 35, 34, 33, 31, 30, 28, 26, 24},
                    {23, 25, 27, 29, 31, 32, 33, 34, 34, 35, 34, 34, 33, 32, 31, 29, 27, 25, 23},
                    {22, 24, 26, 28, 29, 31, 32, 33, 33, 33, 33, 33, 32, 31, 29, 28, 26, 24, 22},
                    {21, 23, 25, 27, 28, 29, 31, 31, 32, 32, 32, 31, 31, 29, 28, 27, 25, 23, 21},
                    {20, 22, 24, 25, 27, 28, 29, 30, 30, 30, 30, 30, 29, 28, 27, 25, 24, 22, 20},
                    {19, 20, 22, 24, 25, 26, 27, 28, 28, 28, 28, 28, 27, 26, 25, 24, 22, 20, 19},
                    {17, 19, 20, 22, 23, 24, 25, 26, 26, 26, 26, 26, 25, 24, 23, 22, 20, 19, 17},
                    {16, 17, 19, 20, 21, 22, 23, 24, 24, 24, 24, 24, 23, 22, 21, 20, 19, 17, 16}
                };

正しく作成したかどうかはわかりません。WinForm アプリの Microsoft サンプルから例を見つけたdouble[,]ので、結果として 10000 を掛けてから に保存しint[,]ます。しかし、これを自分のコードに適用すると、新しい画像を作成するのに数秒かかりますが、それでももっとぼかしたいです。

では、画像をすばやくサイズ変更 (拡大) してトリミングし、ぼかし (汚れ、滑らかにする) 方法はありますか? ありがとう

4

0 に答える 0