Ana*_*tts 4 windows-8 windows-runtime
我正在尝试从Camera Capture UI中获取压缩的JPEG数据,但我在IInputBuffer附近绊倒了.这是我得到的:
private async void OnWebcamButton(object sender, RoutedEventArgs e)
{
var captureUi = new CameraCaptureUI();
var result = await captureUi.CaptureFileAsync(CameraCaptureUIMode.Photo);
var file = await result.OpenForReadAsync();
var reader = new DataReader(file);
byte[] data = new byte[reader.UnconsumedBufferLength];
await reader.LoadAsync(reader.UnconsumedBufferLength);
reader.ReadBytes(data);
// XXX: This is always zero
Debug.Text = String.Format("Buffer is {0} bytes", data.Length);
}
Run Code Online (Sandbox Code Playgroud)
我有什么想法我做错了吗?
我觉得你根本不需要DataReader这里.试试这个:
using System.Runtime.InteropServices.WindowsRuntime; // for AsBuffer()
...
var file = await captureUi.CaptureFileAsync(CameraCaptureUIMode.Photo);
var stream = await result.OpenForReadAsync();
byte[] data = new byte[file.Size];
await stream.ReadAsync(data.AsBuffer(), (uint)data.Length, InputStreamOptions.None);
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用AsStream()扩展方法(from System.IO.WindowsRuntimeStreamExtensons)将WinRT包装IInputStream为System.IO.Stream,然后使用常规.NET技术.
| 归档时间: |
|
| 查看次数: |
2395 次 |
| 最近记录: |