diff --git a/OpenAuth.App/ServiceApp/Algo/DaHuaAiApp.cs b/OpenAuth.App/ServiceApp/Algo/DaHuaAiApp.cs index 5bece00..aec3923 100644 --- a/OpenAuth.App/ServiceApp/Algo/DaHuaAiApp.cs +++ b/OpenAuth.App/ServiceApp/Algo/DaHuaAiApp.cs @@ -139,6 +139,7 @@ namespace OpenAuth.App.ServiceApp.Algo //string detectRegionJson = "[[0, 0],[8063, 647],[8017, 7774],[552, 8033]]"; //string url = "http://123.132.248.154:6015/DroneEnforcement/2025/20250514/lQLPJyIVimQWGKnNA4PNA6Gw1D3q5gbxUvQIiumcIx4vAA_929_899.png"; var regionArray = JsonConvert.DeserializeObject(detectRegionJson); + var imaList = data.imgList; if (oldinfo != null) { string compareGroupId = Guid.NewGuid().ToString(); @@ -163,7 +164,7 @@ namespace OpenAuth.App.ServiceApp.Algo { Console.WriteLine(item.imgUrl); Console.WriteLine(regionArray); - var imgurlend = await DrawingImgAndUpload(item.imgUrl.ToString().Replace("\\", ""), regionArray, cdid); + var imgurlend = await DrawingImgAndUpload1(item.imgUrl.ToString().Replace("\\", ""), imaList, cdid); lasaAiAchievementDetail.Image = imgurlend; } await db.LasaAiAchievementDetail.InsertAsync(lasaAiAchievementDetail); @@ -181,8 +182,7 @@ namespace OpenAuth.App.ServiceApp.Algo CreateTime = DateTime.Now, AiModel = "DaHuaAi", TaskId = cdid - }; - + }; foreach (var item in imageList) { //插入详情 @@ -203,7 +203,7 @@ namespace OpenAuth.App.ServiceApp.Algo Console.WriteLine(item.imgUrl); Console.WriteLine(regionArray); //var imgurlend = await DrawingImgAndUpload(item.imgUrl, regionArray); - var imgurlend = await DrawingImgAndUpload(item.imgUrl.ToString().Replace("\\", ""), regionArray, cdid); + var imgurlend = await DrawingImgAndUpload1(item.imgUrl.ToString().Replace("\\", ""), imaList, cdid); lasaAiAchievementDetail.Image = imgurlend; } lasaAiAchievement.Lat = item.latitude; @@ -282,6 +282,57 @@ namespace OpenAuth.App.ServiceApp.Algo } } } + public async Task DrawingImgAndUpload1(string url, dynamic rects, string cdid) + { + try + { + Console.WriteLine(url); + // 下载图片 + //url = "http://123.132.248.154:6015/DroneEnforcement/2025/20250514/localStorage.jpg"; + using var stream = await httpClient.GetStreamAsync(url); + using var image = Image.FromStream(stream); + using var g = Graphics.FromImage(image); + using var pen = new Pen(Color.Red, 5); // 红色粗线 + float scaleX = image.Width / STANDARD_WIDTH; + float scaleY = image.Height / STANDARD_HEIGHT; + foreach (var item in rects) + { + // 画框 + foreach (var rect in item.objectRect) + { + Console.WriteLine(JsonConvert.SerializeObject(rect)); + int x = (int)(rect.objLeft * scaleX); + int y = (int)(rect.objTop * scaleY); + int width = (int)((rect.objRight - rect.objLeft) * scaleX); + int height = (int)((rect.objBottom - rect.objTop) * scaleY); + + if (x < image.Width && y < image.Height && width > 0 && height > 0) + { + g.DrawRectangle(pen, x, y, width, height); + } + } + } + + + // 保存到内存流再上传 + using var outputStream = new MemoryStream(); + image.Save(outputStream, ImageFormat.Png); + outputStream.Position = 0; + + string fileName = Path.GetFileName(new Uri(url).AbsolutePath); + + // 上传到 MinIO + string uploadedUrl = await _minioService.UploadStreamFile(outputStream, fileName, "test", cdid); + + Console.WriteLine("返回 imgurl:" + uploadedUrl); + return uploadedUrl; + } + catch (Exception ex) + { + Console.WriteLine($"处理图片失败: {url}, 错误: {ex.Message}"); + return string.Empty; + } + } public async void DrawingImgAsync() { string url = "http://123.132.248.154:6015/DroneEnforcement/2025/20250514/lQLPJyIVimQWGKnNA4PNA6Gw1D3q5gbxUvQIiumcIx4vAA_929_899.png";