| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192 |
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Drawing.Imaging;
- using System.Runtime.InteropServices;
- using System.Drawing;
- namespace SRCSharpDemo
- {
- public class SRCSharpTools
- {
- private Dictionary<string, Dictionary<string, string>> translations = new Dictionary<string, Dictionary<string, string>>();
- public string currentDir;
- private string translateCountry;
- public SRCSharpTools()
- {
- }
- #region language
- public void IniLanguageLoader(int translateMode)
- {
- SetTranslateMode(translateMode);
- LoadTranslateIni();
- }
- public void SetTranslateMode(int translateMode)
- {
- if (translateMode == 0)
- {
- translateCountry = "CHINESE";
- }
- else if (translateMode == 2)
- {
- translateCountry = "KOREAN";
- }
- else
- {
- translateCountry = "ENGLISH";
- }
- }
- private void LoadTranslateIni()
- {
- currentDir = Path.GetDirectoryName(System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName);
- string translateIniPath = currentDir + "//Language.ini";
- if (!File.Exists(translateIniPath))
- {
- Console.WriteLine("Error: INI file not found!");
- return;
- }
- string currentLanguage = null;
- foreach (var line in File.ReadAllLines(translateIniPath))
- {
- string trimmed = line.Trim();
- if (string.IsNullOrEmpty(trimmed) || trimmed.StartsWith(";")) continue;
- if (trimmed.StartsWith("[") && trimmed.EndsWith("]"))
- {
- currentLanguage = trimmed.Trim('[', ']');
- if (!translations.ContainsKey(currentLanguage))
- {
- translations[currentLanguage] = new Dictionary<string, string>();
- }
- }
- else if (currentLanguage != null && trimmed.Contains("="))
- {
- int index = trimmed.IndexOf('=');
- if (index > 0) //Make sure '=' exists
- {
- string key = trimmed.Substring(0, index).Trim();
- string value = trimmed.Substring(index + 1).Trim();
- translations[currentLanguage][key] = value;
- }
- }
- }
- }
- public string GetTranslationF(string key, string language = "ENGLISH", string defaultValue = "Translation not found")
- {
- if (translations.ContainsKey(language) && translations[language].ContainsKey(key))
- {
- return translations[language][key];
- }
- return defaultValue;
- }
- public string GetTranslation(string key, string defaultValue = "Translation not found")
- {
- //if (translations.ContainsKey(translateCountry) && translations[translateCountry].ContainsKey(key))
- //{
- // return translations[translateCountry][key];
- //}
- return defaultValue;
- }
- #endregion
- #region show image
- public Bitmap CreateBitmapFromChannels(byte[] pR, byte[] pG, byte[] pB, int width, int height)
- {
- int nTotalPoints = width * height;
- byte[] pRGBData = new byte[width * height * 3]; // 24-bit RGB
- // Merge R, G, B into RGB array
- for (int i = 0; i < nTotalPoints; i++)
- {
- pRGBData[i * 3 + 0] = pB[i]; // Blue
- pRGBData[i * 3 + 1] = pG[i]; // Green
- pRGBData[i * 3 + 2] = pR[i]; // Red
- }
-
- Bitmap bmp = new Bitmap(width, height, PixelFormat.Format24bppRgb);
- BitmapData bmpData = bmp.LockBits(new Rectangle(0, 0, width, height), ImageLockMode.WriteOnly, PixelFormat.Format24bppRgb);
- // Copy data to Bitmap
- Marshal.Copy(pRGBData, 0, bmpData.Scan0, pRGBData.Length);
- bmp.UnlockBits(bmpData);
-
- return bmp;
- }
- public Bitmap ByteArrayToGrayBitmap(byte[] imageData, int width, int height)
- {
- Bitmap bmp = new Bitmap(width, height, PixelFormat.Format8bppIndexed);
- // 获取 Bitmap 数据
- BitmapData bmpData = bmp.LockBits(new Rectangle(0, 0, width, height),
- ImageLockMode.WriteOnly,
- PixelFormat.Format8bppIndexed);
- // 复制数据
- IntPtr ptr = bmpData.Scan0;
- int stride = bmpData.Stride;
- byte[] newData = new byte[stride * height];
- // 把数据按行复制到新数组
- for (int y = 0; y < height; y++)
- {
- Array.Copy(imageData, y * width, newData, y * stride, width);
- }
- Marshal.Copy(newData, 0, ptr, newData.Length);
- bmp.UnlockBits(bmpData);
- // 调整颜色表,确保正确显示灰度图
- ColorPalette palette = bmp.Palette;
- for (int i = 0; i < 256; i++)
- {
- palette.Entries[i] = Color.FromArgb(i, i, i);
- }
- bmp.Palette = palette;
- return bmp;
- }
- #endregion
- #region SetSetting item
- public List<string> GetSettingParams()
- {
- List<string> veParams = new List<string>();
- //veParams.Add(GetTranslation("SETTING_TRIG_MODE"));
- //veParams.Add(GetTranslation("SETTING_SAMPLED_CYCLE"));
- //veParams.Add(GetTranslation("SETTING_BATCH_ON_OFF"));
- //veParams.Add(GetTranslation("SETTING_ENCODER_TYPE"));
- //veParams.Add(GetTranslation("SETTING_ENCODER_INPUTMODE"));
- //veParams.Add(GetTranslation("SETTING_REFINING_POINTS"));
- //veParams.Add(GetTranslation("SETTING_BATCH_POINT"));
- //veParams.Add(GetTranslation("SETTING_CYCLICAL_PATTERN"));
- //veParams.Add(GetTranslation("SETTING_BATCH_OUTPUT"));
- //veParams.Add(GetTranslation("SETTING_Z_MEASURING_RANGE"));
- //veParams.Add(GetTranslation("SETTING_SENSITIVITY"));
- //veParams.Add(GetTranslation("SETTING_EXP_TIME"));
- //veParams.Add(GetTranslation("SETTING_LIGHT_CONTROL"));
- //veParams.Add(GetTranslation("SETTING_LIGHT_MAX"));
- //veParams.Add(GetTranslation("SETTING_LIGHT_MIN"));
- //veParams.Add(GetTranslation("SETTING_PEAK_SENSITIVITY"));
- //veParams.Add(GetTranslation("SETTING_PEAK_SELECT"));
- //veParams.Add(GetTranslation("SETTING_X_SAMPLING"));
- //veParams.Add(GetTranslation("SETTING_FILTER_X_MEDIAN"));
- //veParams.Add(GetTranslation("SETTING_FILTER_X_SMOOTH"));
- //veParams.Add(GetTranslation("SETTING_FILTER_Y_MEDIAN"));
- //veParams.Add(GetTranslation("SETTING_FILTER_Y_SMOOTH"));
- //veParams.Add(GetTranslation("SETTING_CHANGE_3D_25D"));
- //veParams.Add(GetTranslation("SETTING_X_PIXEL"));
- //veParams.Add(GetTranslation("SETTING_X_PITCH"));
- return veParams;
- }
- #endregion
- }
- }
|