0

Я фотографирую свою камеру и когда вызывается OnPictureTaken, я получаю байт []. Я пытаюсь преобразовать массив байтов в System.IO.Stream. Это помогает мне анализировать изображение в Project Oxford API. Я пробовал бесчисленные способы сделать это, но, похоже, я не могу найти решение. Буду очень признателен, если вы поможете мне.Изображение в виде массива байтов для потока

+1

Вы можете * написать * массив байтов в поток, но не преобразовать его в поток. Опубликуйте только один из тех «бесчисленных способов», которые вы пробовали. А также прочитайте [Ask] и возьмите [Tour] – Plutonix

+0

@Plutonix System.IO.Stream stream = new MemoryStream(); stream.Write (данные, 0, data.Length); –

+1

Возможный дубликат [Как преобразовать байты \ [\] в поток на C#?] (Http://stackoverflow.com/questions/4736155/how-do-i-convert-byte-to-stream-in-c) – Jason

ответ

2

Вы можете использовать MemoryStream класс, который создает поток подкрепленной массив байт: MSDN link

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 выдает исключение.

Смежные вопросы