基本信息
源码名称:Idx文件读取(dat/zb)示例
源码大小:0.11M
文件格式:.rar
开发语言:C#
更新时间:2016-08-17
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 2 元×
微信扫码支付:2 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO; namespace Sample { public partial class ImageShowForm : Form { private long imageCount; private Int64 length; private Int64 offSet; private Int64 mapId; private int level; private Double minL; private Double minB; private Double maxL; private Double maxB; private string[] datFile; public ImageShowForm() { InitializeComponent(); } private void exportButton_Click(object sender, EventArgs e) { openFileDialog.ShowDialog(); Stream fileStream = openFileDialog.OpenFile(); FileStream datStream=null; FileStream zbStream = null; if(openFileDialog.FileName!=null) { datFile = openFileDialog.FileName.Split('.'); datStream = File.OpenRead(datFile[0] ".dat"); zbStream = File.OpenRead(datFile[0] ".zb"); } this.FileToStream(fileStream, datStream, zbStream); } public void FileToStream(Stream fileStream,Stream datStream,Stream zbStream) { progressBar.Show(); //计算图片总张数 imageCount = fileStream.Length / 20; byte[] bytes = new byte[8]; byte[] lenbyte = new byte[4]; for (int i = 1; i < imageCount;i ) { //读取index文件信息每20个字节读取信息 fileStream.Seek(i * 20, SeekOrigin.Begin); //读取地图编号 fileStream.Read(bytes, 0, 8); mapId = BitConverter.ToInt64(bytes,0); //读取偏移量 fileStream.Read(bytes, 0, 8); offSet = BitConverter.ToInt64(bytes, 0); //获取图片的长度 fileStream.Read(lenbyte, 0, 4); length = BitConverter.ToInt32(lenbyte, 0); byte[] datbytes = new byte[length]; byte[] zbbytes = new byte[8]; datStream.Position = 0; //根据偏移量和图片长度获取图片的二进制流 datStream.Seek(offSet,SeekOrigin.Begin); datStream.Read(datbytes, 0, (int)length); if(datbytes!=null) { try { Stream ms = new MemoryStream(datbytes); //将二进制流直接付给图片 Image img = new Bitmap(ms, true); pictureBox.Image = img; pictureBox.Refresh(); ms.Close(); ms.Dispose(); img.Dispose(); progressBar.Maximum = (int)imageCount; progressBar.Value=i; } catch(Exception ex) { } } //获取坐标等信息 zbStream.Seek(i * 36, SeekOrigin.Begin); zbStream.Read(zbbytes, 0, 4); level = BitConverter.ToInt16(zbbytes, 0); zbStream.Read(zbbytes, 0, 8); minL = BitConverter.ToDouble(zbbytes, 0); zbStream.Read(zbbytes, 0, 8); minB = BitConverter.ToDouble(zbbytes, 0); zbStream.Read(zbbytes, 0, 8); maxL = BitConverter.ToDouble(zbbytes, 0); zbStream.Read(zbbytes, 0, 8); maxB = BitConverter.ToDouble(zbbytes, 0); showInfoRichTextBox.Text = "图片编号:" mapId "\n" "偏移量:" offSet "\n" "等级:" level "\n" "最小经度:" minL "\n" "最小纬度:" minB "\n" "最大经度:" maxL "\n" "最大纬度:" maxB "\n"; showInfoRichTextBox.Refresh(); } datStream.Close(); fileStream.Close(); progressBar.Hide(); } } }