• 大小: 55KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-17
  • 语言: C#
  • 标签: C#  DAT文件  图像  数据库  

资源简介

C#实现对压缩的DAT图像数据文件的读取,将二进制数据文件按照一定的尺寸还原为bmp图像文件,显示在界面上,同时可以实现将二进制图像保存在数据库中

资源截图

代码片段和文件信息

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Imaging;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Data.SqlClient;

namespace 读取dat文件
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        byte[] bytes = new byte[512000];     //提取的单张图像数据
        byte[] bytes_new = new byte[512000]; //调整好序列的图像数据

        byte xg;

        /// 
        /// 将一个字节数组转换为8bit灰度位图
        /// 

        /// 显示字节数组
        /// 图像宽度
        /// 图像高度
        /// 位图

        public static Bitmap ToGrayBitmap(byte[] rawValues int width int height)
        {
            //// 申请目标位图的变量,并将其内存区域锁定
            Bitmap bmp = new Bitmap(width height PixelFormat.Format8bppIndexed);
            BitmapData bmpData = bmp.LockBits(new Rectangle(0 0 width height) ImageLockMode.WriteOnly PixelFormat.Format8bppIndexed);

            //// 获取图像参数
            int stride = bmpData.Stride;  // 扫描线的宽度
            int offset = stride - width;  // 显示宽度与扫描线宽度的间隙
            IntPtr iptr = bmpData.Scan0;  // 获取bmpData的内存起始位置
            int scanBytes = stride * height;  // 用stride宽度,表示这是内存区域的大小

            //// 下面把原始的显示大小字节数组转换为内存中实际存放的字节数组
            int posScan = 0 posReal = 0;  // 分别设置两个位置指针,指向源数组和目标数组
            byte[] pixelValues = new byte[scanBytes];  //为目标数组分配内存

            for (int x = 0; x < height; x++)
            {
                //// 下面的循环节是模拟行扫描
                for (int y = 0; y < width; y++)
                {
                    pixelValues[posScan++] = rawValues[posReal++];
                }
                posScan += offset;  //行扫描结束,要将目标位置指针移过那段“间隙”
            }

            //// 用Marshal的Copy方法,将刚才得到的内存字节数组复制到BitmapData中
            System.Runtime.InteropServices.Marshal.Copy(pixelValues 0 iptr scanBytes);
            bmp.UnlockBits(bmpData);  // 解锁内存区域

            //// 下面的代码是为了修改生成位图的索引表,从伪彩修改为灰度
            ColorPalette tempPalette;
            using (Bitmap tempBmp = new Bitmap(1 1 PixelFormat.Format8bppIndexed))
            {
                tempPalette = tempBmp.Palette;
            }
            for (int i = 0; i < 256; i++)
            {
                Color ColorTemp = Color.FromArgb(i i i);
                tempPalette.Entries[i] = ColorTemp;
            }

            bmp.Palette = tempPalette;
            //// 算法到此结束,返回结果
            return bmp;
        }


        /// 
        /// 查询
        /// 

        /// 
        /// 
        private void button1_Click(object sender EventArgs e)
        {

            //读取图号
            int tuhao = Convert.T

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2012-12-23 11:02  读取dat文件\
     目录           0  2012-12-23 11:02  读取dat文件\读取dat文件\
     文件         887  2012-12-05 17:18  读取dat文件\读取dat文件.sln
     文件       23040  2013-06-21 14:41  读取dat文件\读取dat文件.suo
     目录           0  2012-12-23 11:02  读取dat文件\读取dat文件\bin\
     目录           0  2012-12-23 11:02  读取dat文件\读取dat文件\bin\Debug\
     文件       13312  2012-12-18 11:44  读取dat文件\读取dat文件\bin\Debug\读取dat文件.exe
     文件       28160  2012-12-18 11:44  读取dat文件\读取dat文件\bin\Debug\读取dat文件.pdb
     文件       11600  2013-06-21 14:40  读取dat文件\读取dat文件\bin\Debug\读取dat文件.vshost.exe
     文件         490  2010-03-17 22:39  读取dat文件\读取dat文件\bin\Debug\读取dat文件.vshost.exe.manifest
     文件        8528  2013-06-21 14:41  读取dat文件\读取dat文件\Form1.cs
     文件        6546  2013-06-21 14:41  读取dat文件\读取dat文件\Form1.Designer.cs
     文件        5817  2013-06-21 14:41  读取dat文件\读取dat文件\Form1.resx
     目录           0  2012-12-23 11:02  读取dat文件\读取dat文件\obj\
     目录           0  2012-12-23 11:02  读取dat文件\读取dat文件\obj\x86\
     目录           0  2013-06-21 14:40  读取dat文件\读取dat文件\obj\x86\Debug\
     文件        5136  2013-06-21 14:40  读取dat文件\读取dat文件\obj\x86\Debug\DesignTimeResolveAssemblyReferences.cache
     文件        6611  2013-06-21 14:40  读取dat文件\读取dat文件\obj\x86\Debug\DesignTimeResolveAssemblyReferencesInput.cache
     文件         236  2012-12-18 10:30  读取dat文件\读取dat文件\obj\x86\Debug\GenerateResource.read.1.tlog
     文件         570  2012-12-18 10:30  读取dat文件\读取dat文件\obj\x86\Debug\GenerateResource.write.1.tlog
     文件        7897  2012-12-05 17:39  读取dat文件\读取dat文件\obj\x86\Debug\ResolveAssemblyReference.cache
     目录           0  2012-12-05 17:17  读取dat文件\读取dat文件\obj\x86\Debug\TempPE\
     文件        1540  2013-06-21 14:40  读取dat文件\读取dat文件\obj\x86\Debug\读取dat文件.csproj.FileListAbsolute.txt
     文件       13312  2012-12-18 11:44  读取dat文件\读取dat文件\obj\x86\Debug\读取dat文件.exe
     文件         180  2012-12-18 10:30  读取dat文件\读取dat文件\obj\x86\Debug\读取dat文件.Form1.resources
     文件       28160  2012-12-18 11:44  读取dat文件\读取dat文件\obj\x86\Debug\读取dat文件.pdb
     文件         180  2012-12-05 17:22  读取dat文件\读取dat文件\obj\x86\Debug\读取dat文件.Properties.Resources.resources
     文件         496  2012-12-05 17:17  读取dat文件\读取dat文件\Program.cs
     目录           0  2012-12-23 11:02  读取dat文件\读取dat文件\Properties\
     文件        1362  2012-12-05 17:17  读取dat文件\读取dat文件\Properties\AssemblyInfo.cs
     文件        2880  2012-12-05 17:17  读取dat文件\读取dat文件\Properties\Resources.Designer.cs
............此处省略4个文件信息

评论

共有 条评论