需求:錄製Avi格式視頻成功後,使用DirectShow生成縮略圖,因爲視頻錄製時,寬高分辨率可調節,因此有些狀況下,生成縮略圖會拋出異常「嘗試讀取或寫入受保護的內存。這一般指示其餘內存已損壞」。html
異常位於代碼段:bmp = new Bitmap(width, height, stride, System.Drawing.Imaging.PixelFormat.Format24bppRgb, hImage);以後。只要對此bmp圖像進行操做就會有異常拋出。數組
因而,查閱msdn關於bitmap類的介紹,以下:ide
用指定的大小、像素格式和像素數據初始化 Bitmap 類的新實例。 spa
public Bitmap ( int width, int height, int stride, PixelFormat format, IntPtr scan0 )
新 Bitmap 的寬度(以像素爲單位)。指針
新 Bitmap 的高度(以像素爲單位)。orm
指定相鄰掃描行開始處之間字節偏移量的整數。這一般(但不必定)是以像素格式表示的字節數(例如,2 表示每像素 16 位)乘以位圖的寬度。傳遞給此參數的值必須爲 4 的倍數。視頻
新 Bitmap 的 PixelFormat 枚舉。htm
指向包含像素數據的字節數組的指針。內存
根聽說明Stride必須爲4的倍數,因而限定設置的寬高必須爲4的倍數,以後生成的avi在縮略圖時再也不異常,問題解決。v8
說明:若有更好方法歡迎指出。謝謝。