3

私は BitmapImage を持っています:

BitmapImage image = new BitmapImage();
image.SetSource(memStream);

後で見るために画像をディスクに保存したい。これを行う方法の作業例が見つかりませんか? 2番目の質問。ピクセルの色 (: などColor cl=image.GetColorPixel(X,Y)) を取得する必要があります。どうすればよいですか? ありがとうございました!

4

5 に答える 5

4

これは、以前にウェブで見つけたコードです。よくわかりませんが、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();
            }
        }
于 2013-03-20T06:50:16.103 に答える
3

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 に保存されます。

それが役に立てば幸い!

  • Binaya Raj Shrestha
于 2013-07-17T11:57:45.390 に答える
1

を保存または変更することはできませんBitmapImageWriteableBitmap代わりに使用する必要があります。本当に選択の余地がない場合は、BitmapImageから始めてください-そのUriSourceプロパティをチェックして、同じ画像を再度ダウンロードするかWriteableBitmap、開始と同じコンテンツでをロードしてBitmapImageください。場合によってはnullになる可能性があることに注意してください(URIを指定してロードされたUriSource場合でも)、BitmapImage手動でリセットするか、指定されたをそのとして使用している設定CacheModeするBitmapCacheImageBitmapImageSourceことでリセットできます。

于 2013-03-20T06:22:12.560 に答える
0

このリンクを見てください。WriteableBitmap http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.media.imaging.writeablebitmap.aspxの操作を示すスニペットがあります 。

例は読書ですが、書くことは難しくありません。

ピクセルを反復するには、PixelData プロパティを見てください。

于 2013-03-19T14:06:27.403 に答える
0

xaml から ui 要素を取得して画像として保存しようとすると、うまくいきません。wpf には、UIelement をパラメーターとして受け取る書き込み可能なビットマップのメソッドがありますが、Windows ストア アプリにはありません。

DirectX を使用できますが、これは非常に複雑なアプローチです。ストアの描画アプリのほとんどは、保存がはるかに簡単な JavaScript を使用しています。

于 2013-03-20T07:04:22.353 に答える