Cianan

导航

IRaster 转换为 Bitmap 方法二

IRaster 转换为 Bitmap 方法二

 1         /// <summary>
 2         /// 
 3         /// </summary>
 4         /// <param name="pRaster"></param>
 5         /// <returns></returns>
 6         public static Bitmap SaveBitmap(IRaster pRaster)
 7         {
 8             IRaster2 pRaster2 = pRaster as IRaster2;
 9             //获取图层的行列值   
10             IRasterProps pRasterProps = pRaster as IRasterProps;
11             int Height = pRasterProps.Height;
12             int Width = pRasterProps.Width;
13 
14             //定义并初始化数组,用于存储栅格内所有像员像素值
15             double[,] PixelValue_red = new double[Height, Width];
16             double[,] PixelValue_green = new double[Height, Width];
17             double[,] PixelValue_blue = new double[Height, Width];
18 
19             //定义RasterCursor初始化,参数设为null,内部自动设置PixelBlock大小
20             IRasterCursor pRasterCursor = pRaster.CreateCursor();
21             //获取该Cursor的PixelBlock中像素的值
22             for (int i = 0; i < Height; i++)
23             {
24                 //string str = "";
25                 for (int j = 0; j < Width; j++)
26                 {
27                     PixelValue_red[i, j] = Convert.ToDouble(pRaster2.GetPixelValue(0, j, i));
28                     PixelValue_green[i, j] = Convert.ToDouble(pRaster2.GetPixelValue(1, j, i));
29                     PixelValue_blue[i, j] = Convert.ToDouble(pRaster2.GetPixelValue(2, j, i));
30                 }
31             }
32 
33             Bitmap bitmap = new Bitmap(Width, Height);
34             for (int w = 0; w < Width; w++)
35             {
36                 for (int h = 0; h < Height; h++)
37                 {
38                     Color color = Color.FromArgb((int)PixelValue_red[h, w], (int)PixelValue_green[h, w], (int)PixelValue_blue[h, w]);
39                     bitmap.SetPixel(w, h, color);
40                 }
41             }
42 
43             return bitmap;
44         }

 

posted on 2018-09-11 16:46  Cianan  阅读(189)  评论(0)    收藏  举报