From 8a3ab64a65da226636743be07c4bee63f50da25d Mon Sep 17 00:00:00 2001
From: patrick.xu <patrick.xu@broconcentric.com>
Date: 星期六, 06 三月 2021 11:35:20 +0800
Subject: [PATCH] 1. 解决软件异常崩溃问题

---
 src/Bro.Common.Device/DeviceBase/HDevEngineTool.cs |   56 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 55 insertions(+), 1 deletions(-)

diff --git a/src/Bro.Common.Device/DeviceBase/HDevEngineTool.cs b/src/Bro.Common.Device/DeviceBase/HDevEngineTool.cs
index ceb3068..7fc9b36 100644
--- a/src/Bro.Common.Device/DeviceBase/HDevEngineTool.cs
+++ b/src/Bro.Common.Device/DeviceBase/HDevEngineTool.cs
@@ -214,7 +214,7 @@
             }
         }
 
-        public static Bitmap ConvertHImgaeToBitmap(this HImage hImage)
+        public static Bitmap ConvertHImageToBitmap(this HImage hImage)
         {
             try
             {
@@ -272,5 +272,59 @@
 
             return img;
         }
+
+        public static Bitmap ConvertHImageTo16GrayBitmap(this HImage originHImage)
+        {
+            HImage hImage = originHImage.Clone();
+
+            //get_domain(Image, rectangle)
+            //* 鑾峰彇鍏ㄥ浘涓儚绱犵伆搴﹀�肩殑鏈�澶у拰鏈�灏忓��
+            //min_max_gray(rectangle, Image, 0, Min, Max, range)
+            hImage.MinMaxGray(hImage.GetDomain(), 0, out double min, out double max, out double range);
+
+            //* 灏�16浣嶅浘鐨勭伆搴﹀�兼槧灏勫埌0 - 255涓�
+            double mult = 255.0 / (max - min);
+            double add = -mult * min;
+            hImage = hImage.ScaleImage(mult, add);
+
+            //* 杞崲涓�'byte'绫诲瀷
+            //convert_image_type(Image_scaled, ImageConverted, 'byte')
+            hImage = hImage.ConvertImageType("byte");
+
+            Bitmap showImage = hImage.ConvertHImageToBitmap();
+
+            hImage.Dispose();
+
+            return showImage;
+        }
+
+        public static Bitmap ConvertSignedHImageTo16GrayBitmap(this HImage originHImage)
+        {
+            HImage hImage = originHImage.Clone();
+
+            hImage = hImage.ConvertImageType("int4");
+            hImage = hImage.ScaleImage(1.0, 32768);
+            hImage = hImage.ConvertImageType("uint2");
+
+            //get_domain(Image, rectangle)
+            //* 鑾峰彇鍏ㄥ浘涓儚绱犵伆搴﹀�肩殑鏈�澶у拰鏈�灏忓��
+            //min_max_gray(rectangle, Image, 0, Min, Max, range)
+            hImage.MinMaxGray(hImage.GetDomain(), 0, out double min, out double max, out double range);
+
+            //* 灏�16浣嶅浘鐨勭伆搴﹀�兼槧灏勫埌0 - 255涓�
+            double mult = 255.0 / (max - min);
+            double add = -mult * min;
+            hImage = hImage.ScaleImage(mult, add);
+
+            //* 杞崲涓�'byte'绫诲瀷
+            //convert_image_type(Image_scaled, ImageConverted, 'byte')
+            hImage = hImage.ConvertImageType("byte");
+
+            Bitmap showImage = hImage.ConvertHImageToBitmap();
+
+            hImage.Dispose();
+
+            return showImage;
+        }
     }
 }

--
Gitblit v1.8.0