Я работаю над проектом, где мне нужно обработать изображение, которое я получаю из сокета, и отображать его.C# Как изображение хранится в MemoryStream
Я получаю изображение в формате jpeg
, и я не могу использовать метод Image.FromStream());
для извлечения изображения, потому что он содержит больше данных, и я хочу обработать его, пока я читаю данные по соображениям эффективности. (В основном, я хочу, чтобы прочитать изображение из потока вручную). Есть ли источник, который объясняет, как эти изображения хранятся в MemoryStream
?
MemoryStream
построен на байте [] buffer, я также использую тот же буфер, и я не создаю новый MemoryStream каждый раз при вызове метода. Образец кода:
private byte[] BlockToJpeg()
{
Bitmap block=new Bitmap("...");
MemoryStream ms=new MemoryStream();
block.Save(ms, ImageFormat.Jpeg);
return ms.GetBuffer();
}
Поэтому вызов будет выглядеть следующим образом
byte[] buffer=BlockToJpeg();
sck.Send(buffer);//sending the buffer...not the full code because this is not our problem.
В настоящее время в стороне Reciver, когда я получу этот буфер:
Byte[] RecieveBuffer=sck.Recieve();//again,kind of pseudo code,because this is not the relevant part.
я должен обрабатывать пиксели, поэтому я предпочитаю читать их с byte[] array
по одному вручную ... Есть ли какие-либо структура для чтения этого (в нашем случае - чтение jpeg-изображения, сохраненного как массив байтов)? Например, первые 4 байта являются шириной, вторая - высотой ... 3rd - PixelFormat, а остальные - значениями пикселей ... или somthing ...?
Спасибо.
Изображения не сохраняются в MemoryStreams, если вы их не поместили. Вам нужно спросить, кто заполняет MemoryStream, как они выбрали компоновку данных. Сами данные - это просто представление файла, оно выложено точно так же, как оно выложено, когда у вас есть файл на жестком диске. –
@ScottChamberlain alright..i добавил короткий пример кода в вопросе, чтобы сделать проще понять .. – Slashy
В вашем обновлении BlockToJpeg не имеет большого смысла, что вы пытаетесь сделать там? Просто попытаться выяснить размер файла, если вы преобразовали png в jpeg? (Также вы должны избавиться от всех созданных вами объектов «Bitmap» или «Image») –