memorystream写入内存提示内存不足
private Bitmap CreateBitmap(byte[] originalImageData, int originalWidth, int originalHeight)
         {
             //指定8位格式,即256色.old
             //指定32位格式
             Bitmap resultBitmap = new Bitmap(originalWidth, originalHeight, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
             try
             {
                 //将该位图存入内存中
                 MemoryStream curImageStream = new MemoryStream();
                 resultBitmap.Save(curImageStream, System.Drawing.Imaging.ImageFormat.Bmp);
                 curImageStream.Flush();
                 //由于位图数据需要DWORD对齐(4byte倍数),计算需要补位的个数
                 //int curPadNum = ((originalWidth * 8 + 31) / 32 * 4) - originalWidth;
                 int curPadNum = ((originalWidth * 24 + 31) / 32 * 4) - originalWidth;
                 //最终生成的位图数据大小
                 //int bitmapDataSize = ((originalWidth * 8 + 31) / 32 * 4) * originalHeight;
                 int bitmapDataSize = ((originalWidth * 24 + 31) / 32 * 4) * originalHeight;
                 //bitmapDataSize = originalWidth * originalHeight;
                 //数据部分相对文件开始偏移,具体可以参考位图文件格式
                 int dataOffset = ReadData(curImageStream, 10, 4);
                 //改变调色板,因为默认的调色板是32位彩色的,需要修改为256色的调色板
                 int paletteStart = 54;
                 int paletteEnd = dataOffset;
                 //int color = 0;
                 //RPG24,不需要调色板
                 //for (int i = paletteStart; i < paletteEnd; i += 4)
                 //{
                 //    byte[] tempColor = new byte[4];
                 //    tempColor[0] = (byte)color;
                 //    tempColor[1] = (byte)color;
                 //    tempColor[2] = (byte)color;
                 //    tempColor[3] = (byte)0;
                 //    color++;
                 //    curImageStream.Position = i;
                 //    curImageStream.Write(tempColor, 0, 4);
                 //}
                 curImageStream.Position = paletteStart;
                 //最终生成的位图数据,以及大小,高度没有变,宽度需要调整
                 byte[] destImageData = new byte[bitmapDataSize];
                 int destWidth = originalWidth + curPadNum;
                 //生成最终的位图数据,注意的是,位图数据 从左到右,从下到上,所以需要颠倒
                 for (int originalRowIndex = originalHeight - 1; originalRowIndex >= 0; originalRowIndex--)
                 {
                     int destRowIndex = originalHeight - originalRowIndex - 1;
                     for (int dataIndex = 0; dataIndex < originalWidth * 3; dataIndex += 3)
                     {
                         //同时还要注意,新的位图数据的宽度已经变化destWidth,否则会产生错位
                         destImageData[destRowIndex * destWidth + dataIndex] = originalImageData[originalRowIndex * originalWidth * 3 + dataIndex];
                         destImageData[destRowIndex * destWidth + dataIndex + 1] = originalImageData[originalRowIndex * originalWidth * 3 + dataIndex + 1];
                         destImageData[destRowIndex * destWidth + dataIndex + 2] = originalImageData[originalRowIndex * originalWidth * 3 + dataIndex + 2];
                     }
                 }
                 //将流的Position移到数据段    
                 curImageStream.Position = dataOffset;
                 //将新位图数据写入内存中
                 curImageStream.Write(destImageData, 0, bitmapDataSize);
                 curImageStream.Flush();