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