質問: 現在、以下のURLのサンプルを参考に、リアルタイムでカメラで取得した画像に対して何かしらの画像処理をかけたものを アウトプットするアプリを作ろうとしています。 http://qiita.com/muak_x/items/c441e1e795ba22d597d6 DidOutputSampleBufferクラスのOutputRecorderという関数の中で取得した画像に対する処理ができることは わかったのですが、処理した画像を出力する方法がわかっておりません。。。 XamarinFormsなのでデータバインディングでViewのimageプロパティに渡すような処理にしたらよいのですかね? それともカメラ特有の処理があるのでしょうか? お手数おかけしますが、ご回答よろしくお願いいたします。
回答: 出力をどういった形で行うのかによってやり方が変わってくると思います。 処理した画像をリアルタイムでそのまま表示したいのであれば、Formsに戻す必要はなくプラットフォーム側で加工した画像をプレビューに戻してやる処理を書くことになるかと思います。 こちらの場合はその処理をしたことがないので、すみませんが詳細をお答えできません。 そうではなく何かのアクションによってそのフレームだけを処理して、その結果をプレビューとは別の場所に表示するといった場合はおっしゃる通りバインディングなりでデータをFormsに戻してImageにセットするといった形になります。この場合は例えば以下のような感じです。 Native側 ``` //UIImageからJpeg出力のバイト変換 var jpegBytes = uiimage.AsJPEG(100).ToArray(); MessagingCenter.Send(new HogeContainer{Data=jpegBytes},"ImageMessage"); ``` MessagingCenterやBinding等でバイト配列を渡す Forms側 ``` //受け取ったバイト配列をImageのソースにセット MessagingCenter.Subscribe(this,"ImageMessage",hoge=>{ image.Source = ImageSource.FromStream(() => new MemoryStream(hoge.Data)); }); ``` ※HogeContainerはPCL上のどこかに定義されているものとします。