2013-06-11 1 views
1

Я использую API, и метод делает что-то для хранения изображения в потоке памяти, но возвращаемые значения этого метода являются указателем Integer на поток памяти и значением размера. Поддерживает ли C# поддержку памяти стиля C с помощью указателей?Как получить данные от указателя int к потоку памяти в C#?

Как я могу получить изображение из указателя памяти и сохранить его в filestream или сохранить как файл? Может кто-нибудь, пожалуйста, назовите любые указатели на это?

+1

Довольно маловероятно, что если вы знаете, что код использует поток, то то, что вы получаете, на самом деле является int *. Скорее всего, это указатель интерфейса, такой как IStream *. Мы можем только догадываться об этом. Спросите продавца, они знают *. –

+0

@ HansPassant, вы были правы, это был указатель возвращен, не знаю, почему они возвращают Integer вместо этого. Спасибо – Dexters

ответ

5

Вы можете прочитать поток памяти, как это:

using (System.IO.UnmanagedMemoryStream memoryStream = new UnmanagedMemoryStream(pointer, length, length, FileAccess.Read)) 
{ 
    byte[] imageBytes = new byte[length]; 
    memoryStream.Read(imageBytes, 0, length); 
} 

Затем разобрать байт, чтобы создать новый образ или что-то, что нужно.

+0

+1 но я бы объяснил немного больше ... :) –

+0

Привет Большое спасибо. Я смог его извлечь, но мне пришлось сделать код небезопасным, а затем придать Integer в (байт *) до того, как я может прочитать его. Но у меня есть одна проблема с этим - как ниже – Dexters

+0

В потоке есть одностраничное изображение tiff. Когда я пишу в файл, я могу видеть изображение прекрасным из файла, но в последовательных циклах, когда я читаю запись ans, файл становится толще с большим количеством байтов, написанных на нем, но он не отображается как многостраничный файл tif. Когда я его открываю, он просто показывает первую страницу. Есть идеи? – Dexters