mirror of
https://github.com/gnh1201/welsonjs.git
synced 2025-10-20 07:40:58 +00:00
Add method ConvertToBinary to the screen time feature
This commit is contained in:
parent
4947151d00
commit
2db49f85f0
|
@ -95,7 +95,7 @@ namespace WelsonJS.Service
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
parent.Log($"Exception (FileEventMonitor): {ex.Message}");
|
parent.Log($"Failed to connect the event log server: {ex.Message}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -107,7 +107,10 @@ public class ScreenMatch
|
||||||
private double threshold = 0.4;
|
private double threshold = 0.4;
|
||||||
private string mode;
|
private string mode;
|
||||||
private List<string> _params = new List<string>();
|
private List<string> _params = new List<string>();
|
||||||
private bool searchFromEnd = false;
|
private bool isSearchFromEnd = false;
|
||||||
|
private bool isConvertToBinary = false;
|
||||||
|
private byte thresholdConvertToBinary = 255;
|
||||||
|
private bool isSaveToFile = false;
|
||||||
|
|
||||||
public ScreenMatch(ServiceBase parent, string workingDirectory)
|
public ScreenMatch(ServiceBase parent, string workingDirectory)
|
||||||
{
|
{
|
||||||
|
@ -138,14 +141,27 @@ public class ScreenMatch
|
||||||
AddParam(s);
|
AddParam(s);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
SetMode(screen_time_mode);
|
|
||||||
LoadTemplateImages();
|
|
||||||
|
|
||||||
if (_params.Contains("backward"))
|
if (_params.Contains("backward"))
|
||||||
{
|
{
|
||||||
searchFromEnd = true;
|
isSearchFromEnd = true;
|
||||||
this.parent.Log("Use the backward search when screen time");
|
this.parent.Log("Use the backward search when screen time");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (_params.Contains("binary"))
|
||||||
|
{
|
||||||
|
isConvertToBinary = true;
|
||||||
|
this.parent.Log("Use the convert to binary when screen time");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_params.Contains("save"))
|
||||||
|
{
|
||||||
|
isSaveToFile = true;
|
||||||
|
this.parent.Log("Will be save an image file when capture the screens");
|
||||||
|
}
|
||||||
|
|
||||||
|
SetMode(screen_time_mode);
|
||||||
|
LoadTemplateImages();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetMode(string mode)
|
public void SetMode(string mode)
|
||||||
|
@ -190,7 +206,8 @@ public class ScreenMatch
|
||||||
{
|
{
|
||||||
Tag = Path.GetFileName(file)
|
Tag = Path.GetFileName(file)
|
||||||
};
|
};
|
||||||
templateImages.Add(bitmap);
|
templateImages.Add(!isConvertToBinary ?
|
||||||
|
bitmap : ConvertToBinary(bitmap, thresholdConvertToBinary));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -248,7 +265,7 @@ public class ScreenMatch
|
||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Bitmap CaptureScreen(Screen screen)
|
public Bitmap CaptureScreen(Screen screen)
|
||||||
{
|
{
|
||||||
Rectangle screenSize = screen.Bounds;
|
Rectangle screenSize = screen.Bounds;
|
||||||
|
|
||||||
|
@ -266,7 +283,8 @@ public class ScreenMatch
|
||||||
bitmapGraphics.CopyFromScreen(screenSize.Left, screenSize.Top, 0, 0, new Size(adjustedWidth, adjustedHeight));
|
bitmapGraphics.CopyFromScreen(screenSize.Left, screenSize.Top, 0, 0, new Size(adjustedWidth, adjustedHeight));
|
||||||
}
|
}
|
||||||
|
|
||||||
return bitmap;
|
return !isConvertToBinary ?
|
||||||
|
bitmap : ConvertToBinary(bitmap, thresholdConvertToBinary);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 윈도우 핸들을 기준으로 찾기
|
// 윈도우 핸들을 기준으로 찾기
|
||||||
|
@ -363,13 +381,13 @@ public class ScreenMatch
|
||||||
Point bestMatch = Point.Empty;
|
Point bestMatch = Point.Empty;
|
||||||
maxCorrelation = 0;
|
maxCorrelation = 0;
|
||||||
|
|
||||||
int startX = searchFromEnd ? mainWidth - templateWidth : 0;
|
int startX = isSearchFromEnd ? mainWidth - templateWidth : 0;
|
||||||
int endX = searchFromEnd ? -1 : mainWidth - templateWidth + 1;
|
int endX = isSearchFromEnd ? -1 : mainWidth - templateWidth + 1;
|
||||||
int stepX = searchFromEnd ? -1 : 1;
|
int stepX = isSearchFromEnd ? -1 : 1;
|
||||||
|
|
||||||
int startY = searchFromEnd ? mainHeight - templateHeight : 0;
|
int startY = isSearchFromEnd ? mainHeight - templateHeight : 0;
|
||||||
int endY = searchFromEnd ? -1 : mainHeight - templateHeight + 1;
|
int endY = isSearchFromEnd ? -1 : mainHeight - templateHeight + 1;
|
||||||
int stepY = searchFromEnd ? -1 : 1;
|
int stepY = isSearchFromEnd ? -1 : 1;
|
||||||
|
|
||||||
for (int x = startX; x != endX; x += stepX)
|
for (int x = startX; x != endX; x += stepX)
|
||||||
{
|
{
|
||||||
|
@ -412,4 +430,26 @@ public class ScreenMatch
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Bitmap ConvertToBinary(Bitmap image, byte threshold)
|
||||||
|
{
|
||||||
|
Bitmap binaryImage = new Bitmap(image.Width, image.Height);
|
||||||
|
binaryImage.Tag = image.Tag;
|
||||||
|
|
||||||
|
for (int y = 0; y < image.Height; y++)
|
||||||
|
{
|
||||||
|
for (int x = 0; x < image.Width; x++)
|
||||||
|
{
|
||||||
|
// Convert the pixel to grayscale
|
||||||
|
Color pixelColor = image.GetPixel(x, y);
|
||||||
|
byte grayValue = (byte)((pixelColor.R + pixelColor.G + pixelColor.B) / 3);
|
||||||
|
|
||||||
|
// Apply threshold to convert to binary
|
||||||
|
Color binaryColor = grayValue < threshold ? Color.Black : Color.White;
|
||||||
|
binaryImage.SetPixel(x, y, binaryColor);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return binaryImage;
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user