引用的库文件:

using System;
using System.Collections;using System.Windows.Media.Imaging;
using System.Drawing;
using System.Drawing.Imaging;

主要功能函数 :

public static System.Array TifToArray(string tifPath)
{//tif -> bitmapImage tifImage = Image.FromFile(tifPath);Bitmap bitmap = new Bitmap(tifImage);int height = (int)bitmap.Height;int width = (int)bitmap.Width;System.Array pixelsArray = Array.CreateInstance(typeof(float), height, width);GrayBitmapData grayBitmapdata = new GrayBitmapData(bitmap);byte[,] bitData = null;bitData = grayBitmapdata.GetData();for (int i = 0; i < height; i++){for (int j = 0; j < width; j++){int[] indices = { i, j };pixelsArray.SetValue(bitData[i, j], indices);}}return pixelsArray;
}

辅助类:

(此处假设输入的tif文件是32位的图像,format32bppArgbFlag)

class GrayBitmapData
{private byte[,] Data;private int Width;private int Height;public GrayBitmapData(){this.Width = 0;this.Height = 0;this.Data = null;}public  GrayBitmapData(Bitmap bmp){//from Bitmap to BitmapDataBitmapData bmpData = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadOnly, bmp.PixelFormat);this.Width = bmpData.Width;this.Height = bmpData.Height;Data = new byte[Height, Width];int temp = 0;unsafe{byte* ptr = (byte*)bmpData.Scan0.ToPointer();for (int i = 0; i < Height; i++){for (int j = 0; j < Width; j++){temp = (int)(0.114 * (*ptr++)) + (int)(0.587 * (*ptr++)) + (int)(0.299 * (*ptr++));//skip the blank or unused space bits ptr++;Data[i, j] = (byte)temp;}//skip the blank space bit//if (format24bppRgbFlag)     ptr += bmpData.Stride - Width * 3;//if (format32bppArgbFlag)    ptr += 0;     // += bmpData.Stride - Width * 4; // https://www.cnblogs.com/dearzhoubi/p/8553763.html}}bmp.UnlockBits(bmpData);}public byte [,] GetData(){return Data;}
}

其他可能有用函数:(Bitmap <= 相互转换=> BitmapSource)

public static System.Drawing.Bitmap ToBitmap(BitmapSource source)
{using (System.IO.MemoryStream ms = new System.IO.MemoryStream()){BitmapEncoder encoder = new BmpBitmapEncoder();encoder.Frames.Add(BitmapFrame.Create(source));encoder.Save(ms);return new System.Drawing.Bitmap(ms);}
}public static BitmapSource ToBitmapSource(System.Drawing.Bitmap bmp)
{System.IntPtr hBitmap = bmp.GetHbitmap();try{return System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(hBitmap, System.IntPtr.Zero, System.Windows.Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions());}finally{DeleteObject(hBitmap);}
}[System.Runtime.InteropServices.DllImport("Gdi32.dll")]
private static extern bool DeleteObject(System.IntPtr hObject);

GIS笔记_普通tif文件转成array数组 c#相关推荐

  1. 怎么把tif文件转成jpg?试试这几招吧!值得收藏

    怎么把tif文件转成jpg?将TIF 格式的图片文件转换为 JPG 格式可以提高图片文件的可用性和互通性,并且有着广泛的应用场景和重要的作用.因为在不同的环境中,TIF 格式的图片文件可能会遇到浏览器 ...

  2. java文件转换成byte数组以及byte数组上传到文件

    文件转换成byte数组 /*** 文件 File file = new File("...");* @param filePath* @return*/public static ...

  3. tif文件转为shp文件_从Tif文件转为shp文件(ArcMap,代码)、gdal打包问题

    从Tif文件转为shp文件(ArcMap,代码) 利用ArcMap来进行转换,以预测出来的滨海湿地图像为例 第一步:打开ArcMap中的栅格转面工具 ArcMap中的栅格转面工具 点击栅格转面之后,选 ...

  4. Java-马士兵设计模式学习笔记-观察者模式-读取properties文件改成单例模式

    一.概述 1.目标:读取properties文件改成单例模式 二.代码 1.Test.java 1 class WakenUpEvent{ 2 3 private long time; 4 priva ...

  5. 转jpg java源程序_将pdf文件转成图片并删除java源代码

    将pdf文件转成图片并删除java源代码/** * 将pdf转成img */ public static void changePdfToImg() { try { File file = new F ...

  6. java文件打包jar文件_把java文件打包成.jar (jar命令详解)

    把java文件打包成.jar (jar命令详解) 先打开命令提示符(win2000或在运行框里执行cmd命令,win98为DOS提示符),输入jar Chelp,然后回车(如果你盘上已经有了jdk1. ...

  7. java文件打包成jar文件_将java文件打包成jar包步骤

    将mypackage包中的FrameDemo.java文件打包成可执行成jar包 步骤1:先将程序中所有类打包成一个包 编译mypackage包FrameDemo.java文件,将类文件存入D盘Jar ...

  8. python视频格式转换_将ppt文件转成mp4视频的Python脚本

    ppt2mp4 (Python2.7) 将ppt文件转成mp4视频.GitHub 前提 1.需要Windows系统,并且启用了Windows多媒体播放器.需要安装Office 2010已上版本.因为P ...

  9. ENVI将tif文件转成shp文件

    打开ENVI, (1)File--Open image file:加载tif数据: (2)Vector--Raster to Vector,选择你要转换的tif文件,然后选择要转换的部分,我是二值图, ...

  10. python binascii array('c')_详解Python中的array数组模块相关使用

    初始化array实例化可以提供一个参数来描述允许那种数据类型,还可以有一个初始的数据序列存储在数组中. import array import binascii s = 'This is the ar ...

最新文章

  1. 为什么企业选择年底裁员?如何选择一个正确的公司!
  2. Linux云服务器上python画图并保存
  3. mysql or的效率_Mysql比较exists与in以及or的效率分析
  4. 微软翻译突破百种语言和方言大关
  5. SAP PM入门系列3 - 设备主数据里无‘检验类型‘栏位,那何处定义维护订单可以触发检验批?
  6. Facebook创建新机器学习系统,用于对视频中的人脸进行“去识别化”
  7. 2.PyCharm安装和使用之HelloWorld
  8. python打开快捷方式_Python创建启动目录的快捷方式,python,到
  9. c语言计算成绩大于90为优秀,输入一个分数,如小于60分,则输出不及格;如大于60小于85,输出良好;85分以上则为优秀。 用c语言编写...
  10. python语法类似php吗_深入学习PHP还是Python
  11. html游戏代码_新手使用的Mac系统的简易代码编辑器推荐
  12. hdu1312---------------DFS模板(调用STL)
  13. 无限分级函数 简单 引用绑值
  14. Wireshark实战分析之ARP协议(一)
  15. 在ASF中使用On Demand生产DEM等产品时使用不同参考DEM的区别
  16. \t转义字符占几个字节?
  17. 海思多媒体(MPP)开发(9)——视频遮挡和运动检测
  18. layui富文本编辑器上传图片
  19. 天池小布助手对话短文本语义匹配-文本二分类实践(pytorch)
  20. *((int *) arg)

热门文章

  1. Enterprise Library 4.1学习笔记2——缓存应用程序块之FileDepende
  2. 处理器管理与进程调度
  3. Flume案例之采集特定目录的数据到HDFS
  4. day4_监控日志的脚本
  5. eclipse——配置maven插件
  6. 第二百二十七节,jQuery EasyUI,ComboTree(树型下拉框)组件
  7. Voxel-Based Global Illumination
  8. Android开机程序(自定义哦!)
  9. REST 表现层状态转换 架构说明
  10. Java中的断言assert的用法