From aaae1139f2bb3a55910fff0aa907b3ba6395deea Mon Sep 17 00:00:00 2001 From: xcd <834800634@qq.com> Date: 星期二, 30 六月 2020 08:54:06 +0800 Subject: [PATCH] 添加goactor驱动 --- src/Bro.Device.HikCamera/HikCameraDriver.cs | 64 +------------------------------ 1 files changed, 3 insertions(+), 61 deletions(-) diff --git a/src/Bro.Device.HikCamera/HikCameraDriver.cs b/src/Bro.Device.HikCamera/HikCameraDriver.cs index 57aebcd..02864f5 100644 --- a/src/Bro.Device.HikCamera/HikCameraDriver.cs +++ b/src/Bro.Device.HikCamera/HikCameraDriver.cs @@ -324,7 +324,7 @@ NewImageSet(set); OnHImageOutput?.BeginInvoke(this, hImage, set.Id, null, null); - HikToBitmap(nWidth, nHeight, pData, set.Id); + Generate8GrayImageByPointer(nWidth, nHeight, pData, set.Id); } else { @@ -382,7 +382,7 @@ uint nHeight = pFrameInfo.nHeight; //HikToBitmap(pFrameInfo, frameInfo.pBufAddr); - HikToBitmap((int)nWidth, (int)nHeight, frameInfo.pBufAddr, ""); + Generate8GrayImageByPointer((int)nWidth, (int)nHeight, frameInfo.pBufAddr, ""); } } } @@ -437,71 +437,13 @@ set.HImage = hImage; - HikToBitmap((int)nWidth, (int)nHeight, frameInfo.pBufAddr, set.Id); + Generate8GrayImageByPointer((int)nWidth, (int)nHeight, frameInfo.pBufAddr, set.Id); return set; } } } throw new Exception($"Grap Image Failed:{nRet:x8}"); - } - - [DllImport("kernel32.dll", EntryPoint = "CopyMemory", SetLastError = false)] - public static extern void CopyMemory(IntPtr dest, IntPtr src, uint count); - - private async void HikToBitmap(int width, int height, IntPtr dataPtr, string imgSetId) - { - await Task.Run(() => - { - //************************Mono8 杞� Bitmap******************************* - Bitmap bmp = new Bitmap(width, height, PixelFormat.Format8bppIndexed); - Bitmap showImage = new Bitmap(width, height, PixelFormat.Format8bppIndexed); - - ColorPalette cp = bmp.Palette; - for (int i = 0; i < 256; i++) - { - cp.Entries[i] = Color.FromArgb(i, i, i); - } - bmp.Palette = cp; - - ColorPalette cp1 = showImage.Palette; - for (int i = 0; i < 256; i++) - { - cp1.Entries[i] = Color.FromArgb(i, i, i); - } - showImage.Palette = cp1; - - int[] ptr = new int[3]; - Rectangle rect = new Rectangle(0, 0, width, height); - BitmapData bitmapData = bmp.LockBits(rect, ImageLockMode.WriteOnly, PixelFormat.Format8bppIndexed); - BitmapData showImageData = showImage.LockBits(rect, ImageLockMode.WriteOnly, PixelFormat.Format8bppIndexed); - int PixelSize = Bitmap.GetPixelFormatSize(bitmapData.PixelFormat) / 8; - - if (width % 4 == 0) - { - CopyMemory(bitmapData.Scan0, dataPtr, (uint)(width * height * PixelSize)); - CopyMemory(showImageData.Scan0, dataPtr, (uint)(width * height * PixelSize)); - } - else - { - ptr[0] = bitmapData.Scan0.ToInt32(); - ptr[1] = showImageData.Scan0.ToInt32(); - ptr[2] = (int)dataPtr; - for (int i = 0; i < height - 1; i++) - { - ptr[2] += width; - - CopyMemory((IntPtr)ptr[0], (IntPtr)ptr[2], (uint)(width * PixelSize)); - CopyMemory((IntPtr)ptr[1], (IntPtr)ptr[2], (uint)(width * PixelSize)); - ptr[0] += bitmapData.Stride; - ptr[1] += showImageData.Stride; - } - } - bmp.UnlockBits(bitmapData); - showImage.UnlockBits(showImageData); - - SaveOriginImage(bmp, showImage, imgSetId); - }); } readonly MyCamera device = new MyCamera(); -- Gitblit v1.8.0