C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: WPFのImageコントロールからローカル保存


(過去ログ 168 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■97100 / inTopicNo.1)  WPFのImageコントロールからローカル保存
  
□投稿者/ senamoon (1回)-(2021/03/26(Fri) 21:43:36)

分類:[.NET 全般] 

現在、WPFのimageコントロールにUSBカメラで取得した画像を高速で表示させる処理を行なっています。
ボタンを押すと、別のimage2コントロールにimage2.sorce=image.sorceで出力させているのですが、
ボタン2を押せば、imageaコントロールに入った画像を指定のローカルフォルダに保存させたいのですが、なかなかうまくいきません。
どのように実装すれば良いかご教示いただけますと幸いです。
引用返信 編集キー/
■97101 / inTopicNo.2)  Re[1]: WPFのImageコントロールからローカル保存
□投稿者/ 通りすがり (6回)-(2021/03/26(Fri) 23:10:07)
何がどううまくいかないのか説明して下さい。

以下を参考にどうぞ
https://stackoverflow.com/questions/5963172/how-can-i-save-the-picture-on-image-control-in-wpf
引用返信 編集キー/
■97102 / inTopicNo.3)  Re[2]: WPFのImageコントロールからローカル保存
□投稿者/ senamoon (3回)-(2021/03/27(Sat) 13:31:47)
No97101 (通りすがり さん) に返信
> 何がどううまくいかないのか説明して下さい。
>
> 以下を参考にどうぞ
> https://stackoverflow.com/questions/5963172/how-can-i-save-the-picture-on-image-control-in-wpf

using(FileStream stream = new FileStream("Temp/test.bmp", FileMode.Create)
{
ImageSource source = image2.Source;
BmpBitmapEncoder encoder = new BmpBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create((Bitmapsource)source));
encoder.Save(stream);
}

上記コードのFrames.Addのsourceで、別のスレッドに所有されているため、呼び出しスレッドはこのオブジェクトにアクセスできません、とエラー落ちします。
そのほか、RenderRangeBitamapなどで一度bitmap化してみたりと試してみましたが、進捗がなくお手上げ状態です。

そもそも、image.sourceから取り出すこと自体が間違っているのでしょうか。
souceをbitmap等とbindingさせて、ボタンイベント時に元のbitmapから.saveした方が良いのでしょうか。
ただ、カメラ側の出力が60fps程度あるため、遅延などが気になっています。

基礎知識が欠落しているため、的外れな質問をしてしまっていたら、申し訳ありません。
よろしくお願いいたします。
引用返信 編集キー/
■97104 / inTopicNo.4)  Re[3]: WPFのImageコントロールからローカル保存
□投稿者/ Hongliang (1160回)-(2021/03/27(Sat) 20:07:58)
例外メッセージにあるように、作成したスレッド以外でUI要素
(今回であればImageオブジェクト)に触ることはできません。
なのでBitmapSourceオブジェクトをImage.Sourceから確保するのは
UIスレッドのうちに済ます必要があります。

例えば:
private async void button1_Click(object sender, RoutedEventArgs e) {
    var bmp = (BitmapSource)image1.Source;
    await Task.Run(() => SaveImage(bmp));
}

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -