12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- using System;
- using System.Collections.Generic;
- using System.Drawing;
- using System.Drawing.Imaging;
- using System.Linq;
- using System.Runtime.InteropServices;
- using System.Text;
- using System.Threading.Tasks;
- namespace CCDCount.DLL
- {
- public class LoadSplieImageClass
- {
- #region 变量
- //读取的图片路径
- private string SplieImagePath = "";
- //读取到的图像
- Bitmap bitmap;
- #endregion
- #region 公共方法
- public void LoadImage(string ImagePath)
- {
- SplieImagePath = ImagePath;
- bitmap = new Bitmap(ImagePath);
- }
- /// <summary>
- /// 读取图像像素信息并分割
- /// 目前仅分解海康VM平台保存的二值化BMP文件可正常读取像素信息
- /// </summary>
- /// <returns></returns>
- public List<byte[]> SplieImage()
- {
- //初始化返回列表数组
- List<byte[]> result = new List<byte[]>();
- for (int i = 0; i < bitmap.Height; i++)
- {
- result.Add(new byte[bitmap.Width]);
- }
- //读取全部像素信息
- BitmapData data = bitmap.LockBits(
- new Rectangle(0, 0, bitmap.Width, bitmap.Height),
- ImageLockMode.ReadOnly,
- bitmap.PixelFormat
- );
- //分行读取
- for (int i = 0; i < bitmap.Height; i++)
- {
- Marshal.Copy(IntPtr.Add(data.Scan0, i * bitmap.Width * sizeof(byte)), result[i], 0, bitmap.Width);
- }
- bitmap.UnlockBits(data);
- return result; // 原始字节数据(需根据 PixelFormat 解析)
- }
- #endregion
- }
- }
|