BMS и MPEG4 - совсем другие вещи. Растровое изображение имеет два размера. Mpeg4 или другие видеофайлы хранят список двухмерных кадров с использованием сложных алгоритмов сжатия. Поэтому у вас есть два пробела плюс одноразовый размер. Ваш массив должен быть трехмерным. Из вашего вопроса неясно, пытаетесь ли вы прочитать изображение (c: \ kk.bmp) или видео (filename_mpeg4).
В обоих случаях необходимо декодировать файл. Не пытайтесь делать это сами, это очень сложно (особенно для видео).
Чтение растрового изображения легко:
Bitmap myBitmap = new Bitmap(@"C:\kk.bmp");
Это работает для JPG, GIF, TIF и PNG, а также. Декодеры интегрированы в ОС Windows.
Вы можете нарисовать изображение и сделать другие вещи, не преобразовывая их в какой-либо массив.
// Example: Drawing a line on a bitmap
using (Graphics g = Graphics.FromImage(myBitmap)) {
g.DrawLine(Pens.Red, new Point(0, 0), new Point(100, 50));
}
Если вам все еще нужно, чтобы извлечь данные пикселя в массив, этот SO ответ может помочь вам: C# Getting the pixel data efficiently from System.Drawing.Bitmap
Видео это совершенно другая история. На ваш вопрос нет простого ответа. Этот CodeProject может вам помочь: http://www.codeproject.com/Articles/9676/Extracting-still-pictures-from-movie-files-with-C.
Каждый массив может быть доступен как двухмерный ... http://stackoverflow.com/questions/1817631/iterating-one-dimension-array-as-two-dimension-array –