图像为流的字节数组

时间:2016-06-22 18:25:34

标签: c# xamarin xamarin.android type-conversion microsoft-cognitive

我正在用相机拍照,当调用OnPictureTaken时,我得到一个byte []数据。我试图将字节数组转换为System.IO.Stream。这有助于我分析Project Oxford API中的图像。我已经尝试了无数种方法来做到这一点,但似乎我无法找到解决方案。如果你帮助我,我将非常感激。

2 个答案:

答案 0 :(得分:2)

您可以使用MemoryStream类,它创建一个由字节数组支持的流:MSDN link

答案 1 :(得分:0)

使用Client SDK时,您可以通过NuGet获取,{}需要为Stream等方法提供VisionServiceClient.AnalyzeImageAsync()

您可以在Stream中创建byte[]并将其提供给SDK,如下所示:

using (var stream = new MemoryStream(yourByteArray))
{
    var visionServiceClient = new VisionServiceClient("YOUR_API_KEY");
    var visualFeatures = new VisualFeature[] { VisualFeature.Adult, VisualFeature.Categories, VisualFeature.Color, VisualFeature.Description, VisualFeature.Faces, VisualFeature.ImageType, VisualFeature.Tags };

    var result = await visionServiceClient.AnalyzeImageAsync(stream, visualFeatures);
}

提示:在Android中,处理图片时经常会遇到Android.Graphics.Bitmap个对象。特别是用相机拍照时。您也可以将它们转换为imageBitmap.Compress(Bitmap.CompressFormat.Jpeg, 0, stream);的流,但不要忘记"倒带"使用stream.Seek(0, SeekOrigin.Begin);的流,否则SDK将抛出异常。