イメージ処理で動作する Windows Phone 8 アプリを実装して、Windows 8 アプリから移植しようとしています。しかし、最初はすぐに行き詰まりました。
私が達成したいのは、電話からいくつかの写真を選択して、アルバムで見るのと同じようにアプリで表示することです。このために、私はいくつかの MVVM テクニックも試しました。BitmapImage
しかし、ファイルからを作成しようとするとStream
、範囲外であるというエラーが表示されます...
ここに私のモデルがあります:
public class SelectedPhoto : IDisposable
{
public Stream Data { get; set; }
public string Name { get; set; }
public BitmapImage Image { get; set; }
public SelectedPhoto(string name, Stream data)
{
Name = name;
Data = new MemoryStream();
data.CopyTo(Data);
Image = new BitmapImage();
Image.SetSource(Data); //Here's the Argument Exception.
}
public void Dispose()
{
Data.Dispose();
}
}
したがって、コンストラクターでかなり例外が与えられます...そして、これを次のPhotoChooserTask
ようなコードで使用します:
private void PhotoChooserTaskCompleted(object sender, PhotoResult e)
{
if (e.TaskResult == TaskResult.OK)
{
PhotosViewModel.AddPhoto(new SelectedPhoto(e.OriginalFileName, e.ChosenPhoto));
}
}
Argument Exception は次のように述べています: オフセットと長さが配列の範囲外であるか、カウントがインデックスからソース コレクションの末尾までの要素数を超えています。しかし、私はストリームを操作しているわけではありません。いくつかの例を見てきたように、ストリームから BitmapImage を作成するために必要なだけです。
この場合、選択した画像ファイルの BitmapImage を電話から取得するにはどうすればよいですか? または、WriteableBitmap として直接取得するにはどうすればよいですか? 後で、ピクセル操作を行う予定です。
どんなタイプのアプローチでも大歓迎です、ありがとう。