私は BitmapImage を持っています:
BitmapImage image = new BitmapImage();
image.SetSource(memStream);
後で見るために画像をディスクに保存したい。これを行う方法の作業例が見つかりませんか? 2番目の質問。ピクセルの色 (: などColor cl=image.GetColorPixel(X,Y)
) を取得する必要があります。どうすればよいですか? ありがとうございました!
私は BitmapImage を持っています:
BitmapImage image = new BitmapImage();
image.SetSource(memStream);
後で見るために画像をディスクに保存したい。これを行う方法の作業例が見つかりませんか? 2番目の質問。ピクセルの色 (: などColor cl=image.GetColorPixel(X,Y)
) を取得する必要があります。どうすればよいですか? ありがとうございました!
これは、以前にウェブで見つけたコードです。よくわかりませんが、sdk サンプルまたは winrt ブログからのものであることが正しければ
それはすべて WritabelBitmap Image (既に投稿されている他のものと同様) に帰着し、デコーダーを作成してストリームにプッシュします。
/// <summary>
///
/// </summary>
/// <param name="writeableBitmap"></param>
/// <param name="outputFile"></param>
/// <param name="encoderId"></param>
/// <returns></returns>
public static async Task SaveToFile(
this WriteableBitmap writeableBitmap,
IStorageFile outputFile,
Guid encoderId)
{
try
{
Stream stream = writeableBitmap.PixelBuffer.AsStream();
byte[] pixels = new byte[(uint)stream.Length];
await stream.ReadAsync(pixels, 0, pixels.Length);
using (var writeStream = await outputFile.OpenAsync(FileAccessMode.ReadWrite))
{
var encoder = await BitmapEncoder.CreateAsync(encoderId, writeStream);
encoder.SetPixelData(
BitmapPixelFormat.Bgra8,
BitmapAlphaMode.Premultiplied,
(uint)writeableBitmap.PixelWidth,
(uint)writeableBitmap.PixelHeight,
96,
96,
pixels);
await encoder.FlushAsync();
using (var outputStream = writeStream.GetOutputStreamAt(0))
{
await outputStream.FlushAsync();
}
}
}
catch (Exception ex)
{
string s = ex.ToString();
}
}
BitmapImage は次の方法で保存できます。
Windows.Storage.StorageFolder localFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
StorageFile sampleFile = await localFolder.CreateFileAsync("image.png");
await FileIO.WriteBytesAsync(sampleFile, bytes);
image.png はアプリケーションの LocalFolder に保存されます。
それが役に立てば幸い!
を保存または変更することはできませんBitmapImage
。WriteableBitmap
代わりに使用する必要があります。本当に選択の余地がない場合は、BitmapImageから始めてください-そのUriSource
プロパティをチェックして、同じ画像を再度ダウンロードするかWriteableBitmap
、開始と同じコンテンツでをロードしてBitmapImage
ください。場合によってはnullになる可能性があることに注意してください(URIを指定してロードされたUriSource
場合でも)、BitmapImage
手動でリセットするか、指定されたをそのとして使用しているに設定CacheMode
するBitmapCache
Image
BitmapImage
Source
ことでリセットできます。
このリンクを見てください。WriteableBitmap http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.media.imaging.writeablebitmap.aspxの操作を示すスニペットがあります 。
例は読書ですが、書くことは難しくありません。
ピクセルを反復するには、PixelData プロパティを見てください。
xaml から ui 要素を取得して画像として保存しようとすると、うまくいきません。wpf には、UIelement をパラメーターとして受け取る書き込み可能なビットマップのメソッドがありますが、Windows ストア アプリにはありません。
DirectX を使用できますが、これは非常に複雑なアプローチです。ストアの描画アプリのほとんどは、保存がはるかに簡単な JavaScript を使用しています。