public void When_rounding_colors() { var bytes1 = File.ReadAllBytes("Files/webcam_screenshot1.jpg"); var stopwatch = Stopwatch.StartNew(); var memoryStream = new MemoryStream(bytes1); var image = Image.FromStream(memoryStream); var bitmap = new Bitmap(image); var blocksBuilder = new BlocksBuilder(bitmap); var pixelsBlocks = new List <PixelsBlock>(); for (int i = 0; i < blocksBuilder.GetBlockCount(); i++) { var block = blocksBuilder.GetPixelsBlock(i); pixelsBlocks.Add(block); } var output = new Bitmap(bitmap.Width, bitmap.Height); foreach (var block in pixelsBlocks) { foreach (Pixel pixel in block.Pixels) { //var colorEncodingRate = 4; // coding with 6 bits (255/4 = 63) //var bits = 6; var colorEncodingRate = 8; // coding with 5 bits (255/8 = 31) var bits = 5; ushort red = (ushort)Math.Max(0, pixel.Color.R / colorEncodingRate * colorEncodingRate); ushort green = (ushort)Math.Max(0, pixel.Color.G / colorEncodingRate * colorEncodingRate); ushort blue = (ushort)Math.Max(0, pixel.Color.B / colorEncodingRate * colorEncodingRate); int pixelColor = red; pixelColor = (pixelColor << bits) + green; pixelColor = (pixelColor << bits) + blue; int pixelColor2 = pixelColor; ushort blue2 = (ushort)(pixelColor2 & 0x0000FF); pixelColor2 = pixelColor2 >> bits; ushort green2 = (ushort)(pixelColor2 & 0x0000FF); pixelColor2 = pixelColor2 >> bits; ushort red2 = (ushort)(pixelColor2 & 0x0000FF); //var color = Color.FromArgb(red, green, blue); var color = Color.FromArgb(red2, green2, blue2); output.SetPixel(pixel.X, pixel.Y, color); } } output.Save("When_rounding_colors.bmp"); stopwatch.Stop(); var elapsed = stopwatch.Elapsed; }
public async Task <JObject> BuildSlackPayload(string header, string sourceId, ICloseClient closeApi, string jobPostCustomer = null) { Dictionary <string, Option> customers = await closeApi.GetListOfCustomers(); BlocksBuilder builder = new BlocksBuilder(); StaticSelect customerSelect = new StaticSelect("customer_select", customers.Values.ToList(), "Customer"); SlackAction actions = new SlackAction("actions") .AddElement(customerSelect); // check if we have detected a customer and if so set it as initial option if (!string.IsNullOrEmpty(jobPostCustomer)) { actions.AddElement(new Button("addToClose_btn", "Add to Close", ButtonStyle.PRIMARY)); if (customers.ContainsKey(jobPostCustomer)) { customerSelect.AddInitialOption(customers[jobPostCustomer]); } } // adding button in the proper place actions.AddElement(new Button("qualifyLead_btn", "Qualify Lead", string.IsNullOrEmpty(jobPostCustomer) ? ButtonStyle.PRIMARY : ButtonStyle.DEFAULT)); builder.AddBlock(new Section(new Text(" "))); builder.AddBlock(new Section(new Text(" "))); builder.AddBlock(new Section(new Text("*" + header + "*" + Environment.NewLine + sourceId, "mrkdwn"), "msg_header")); builder.AddBlock(actions); builder.AddBlock(new Divider()); return(builder.GetJObject()); }
public void When_drawing_image() { var bytes1 = File.ReadAllBytes("Files/webcam_screenshot1.jpg"); var stopwatch = Stopwatch.StartNew(); var memoryStream = new MemoryStream(bytes1); var image = Image.FromStream(memoryStream); var bitmap = new Bitmap(image); var blocksBuilder = new BlocksBuilder(bitmap); //var pixelsBlocks = blocksBuilder.GetBlocks(); //var pixelsBlocks = blocksBuilder.GetBlocksFast(); var pixelsBlocks = new List <PixelsBlock>(); bool altern = false; for (int i = 0; i < blocksBuilder.GetBlockCount(); i++) { altern = !altern; //if (altern) // continue; var block = blocksBuilder.GetPixelsBlock(i); pixelsBlocks.Add(block); } var output = new Bitmap(bitmap.Width, bitmap.Height); foreach (var block in pixelsBlocks) { foreach (var pixel in block.Pixels) { output.SetPixel(pixel.X, pixel.Y, pixel.Color); } } output.Save("When_drawing_image.bmp"); stopwatch.Stop(); var elapsed = stopwatch.Elapsed; }
public void When_use_Fast_block_bluider() { var bytes1 = File.ReadAllBytes("Files/webcam_screenshot1.jpg"); var stopwatch = Stopwatch.StartNew(); var memoryStream = new MemoryStream(bytes1); var image = Image.FromStream(memoryStream); var bitmap = new Bitmap(image); var blocksBuilder = new BlocksBuilder(bitmap); //var pixelsBlocks = blocksBuilder.GetBlocks(); //var pixelsBlocks = blocksBuilder.GetBlocksFast(); stopwatch.Stop(); var elapsed = stopwatch.Elapsed; }
public void When_building_blocks() { var bytes1 = File.ReadAllBytes("Files/webcam_screenshot1.jpg"); var stopwatch = Stopwatch.StartNew(); var memoryStream = new MemoryStream(bytes1); var image = Image.FromStream(memoryStream); var bitmap = new Bitmap(image); //var graphics = Graphics.FromImage(bitmap); var blocksBuilder = new BlocksBuilder(bitmap); var pixelsBlocks = blocksBuilder.GetBlocks(); //var imageData = blocksBuilder.GetImageData(); var pixelsBlocks2 = blocksBuilder.GetBlocksFast(); stopwatch.Stop(); var elapsed = stopwatch.Elapsed; var fps = 1000 / stopwatch.ElapsedMilliseconds; Assert.AreEqual(pixelsBlocks.First().Pixels.First().Color, pixelsBlocks2.First().Pixels.First().Color); Assert.IsTrue(pixelsBlocks.All(b => b.Pixels.Count == BlocksBuilder.BlockSize * BlocksBuilder.BlockSize)); for (int i = 0; i < pixelsBlocks.Count; i++) { for (int j = 0; j < pixelsBlocks[i].Pixels.Count; j++) { Assert.AreEqual(pixelsBlocks[i].Pixels[j].X, pixelsBlocks2[i].Pixels[j].X); Assert.AreEqual(pixelsBlocks[i].Pixels[j].Y, pixelsBlocks2[i].Pixels[j].Y); Assert.AreEqual(pixelsBlocks[i].Pixels[j].Color, pixelsBlocks2[i].Pixels[j].Color); } } }
public static JObject BuildDefaultSlackPayload(string header, Option selectedOption, SlackPostState postState, string leadId = "", Dictionary <string, Option> customers = null) { BlocksBuilder builder = new BlocksBuilder(); SlackAction actions = new SlackAction("actions"); if (!(customers is null)) { StaticSelect customerSelect = new StaticSelect("customer_select", customers.Values.ToList(), "Customer"); actions.AddElement(customerSelect); if (!(selectedOption is null)) { customerSelect.AddInitialOption(selectedOption); } } actions.AddElement(new Button("addToClose_btn", "Add to Close", ButtonStyle.PRIMARY)); // adding button in the proper place actions.AddElement(new Button("qualifyLead_btn", "Qualify Lead")); builder.AddBlock(new Section(new Text(" "))); builder.AddBlock(new Section(new Text(" "))); builder.AddBlock(new Section(new Text(header, "mrkdwn"), "msg_header")); if (postState == SlackPostState.ACTIONS) { builder.AddBlock(actions); } else if (postState == SlackPostState.FINAL) { builder.AddBlock(new Section(new Text($":white_check_mark: *Opportunity added to <https://app.close.com/lead/{leadId}|Close.com>*", "mrkdwn"))); } builder.AddBlock(new Divider()); return(builder.GetJObject()); }
public void When_store_with_BitmapCompressor() { var bytes1 = File.ReadAllBytes("Files/webcam_screenshot1.jpg"); var stopwatch = Stopwatch.StartNew(); var memoryStream = new MemoryStream(bytes1); var image = Image.FromStream(memoryStream); var bitmap = new Bitmap(image); var blocksBuilder = new BlocksBuilder(bitmap); var pixelsBlocks = new List <PixelsBlock>(); for (int i = 0; i < blocksBuilder.GetBlockCount(); i++) { var block = blocksBuilder.GetPixelsBlock(i); pixelsBlocks.Add(block); } var compressor = new BitmapCompressor(); using (FileStream fileStream = File.OpenWrite("out.compressed")) using (var writer = new BinaryWriter(fileStream)) { foreach (var block in pixelsBlocks) { foreach (Pixel pixel in block.Pixels) { ushort color = compressor.CompressColor(pixel.Color); writer.Write(color); } } fileStream.Flush(true); } stopwatch.Stop(); var elapsed = stopwatch.Elapsed; }
/// <summary> /// A Lambda function to respond to HTTP Get methods from API Gateway /// </summary> /// <param name="request"></param> /// <returns>The list of blogs</returns> public APIGatewayProxyResponse Get(APIGatewayProxyRequest request, ILambdaContext context) { context.Logger.LogLine("Get Request\n"); var requestBody = Utility.GetBodyJObject(request.Body); var command = (string)requestBody.SelectToken("command"); var commandParams = new string[1]; var response = new APIGatewayProxyResponse(); switch (command.ToLower().Trim()) { case "/skill": var commandText = (string)requestBody.SelectToken("text"); if (!string.IsNullOrEmpty(commandText)) { commandParams = commandText.Trim().Split(" "); var skillName = commandParams[0]; var amount = Convert.ToInt32(commandParams[1]); var queryObj = new JObject { { "limit", amount }, { "skillName", skillName } }; var httpClient = new HttpClient(); HttpResponseMessage httpResponse = httpClient.PostAsJsonAsync("https://7dq5d3f0yb.execute-api.eu-west-1.amazonaws.com/production/relatedskills", queryObj).Result; var payload = httpResponse.Content.ReadAsJsonAsync <JArray>().Result; var skills = JsonConvert.DeserializeObject <List <Skill> >(payload.ToString()); var slackBuilder = new BlocksBuilder(); slackBuilder.AddBlock(new Section(new Text(" "))); slackBuilder.AddBlock(new Section(new Text($"`Skill: {skillName.ToUpper()}`", "mrkdwn"))); slackBuilder.AddBlock(new Divider()); var slackSection = new Section(); if (skills.Count > 0) { for (int i = 0; i < skills.Count; i++) { if (i % 10 == 0 && i != 0) { slackBuilder.AddBlock(slackSection); slackSection = new Section(); } slackSection.AddField($"```{skills[i].Name}```", "mrkdwn"); } slackBuilder.AddBlock(slackSection); } else { slackBuilder.AddBlock(new Section(new Text("*No related skills found*", "mrkdwn"))); } var slackPayload = slackBuilder.GetJObject(); context.Logger.LogLine(slackPayload.ToString()); response = new APIGatewayProxyResponse { StatusCode = (int)HttpStatusCode.OK, Body = slackPayload.ToString(), Headers = new Dictionary <string, string> { { "Content-Type", "application/json" } } }; } // TODO: return msg that skill doesn't exist break; } return(response); }