fly 8 ماه پیش
والد
کامیت
0d261c9155
4فایلهای تغییر یافته به همراه199 افزوده شده و 187 حذف شده
  1. 56 54
      Service/AIDiagnosisService.URM.cs
  2. 31 29
      Service/AIDiagnosisService.Vet.cs
  3. 4 2
      Service/AIDiagnosisService.cs
  4. 108 102
      URMManage/URMProcess.cs

+ 56 - 54
Service/AIDiagnosisService.URM.cs

@@ -977,68 +977,70 @@ namespace WingAIDiagnosisService.Service
                     // 设置额外图片的目标大小
                     int targetWidth = 30;
                     int targetHeight = 20;
-                    SKBitmap bitmapExtra = new SKBitmap(targetWidth, targetHeight);
-                    using (SKCanvas canvasExtra = new SKCanvas(bitmapExtra))
+                    using (SKBitmap bitmapExtra = new SKBitmap(targetWidth, targetHeight))
                     {
-                        // 缩放额外图片到目标大小
-                        canvasExtra.DrawBitmap(originalBitmapExtra, new SKRect(0, 0, targetWidth, targetHeight));
-                    }
-                    int spacing = 20; // 设置间距
-                    int downShift = 35; // 往下移动的距离
-                    int width = bitmap1.Width + bitmap2.Width + spacing + 100;
-                    int height = Math.Max(bitmap1.Height, bitmap2.Height);
+                        using (SKCanvas canvasExtra = new SKCanvas(bitmapExtra))
+                        {
+                            // 缩放额外图片到目标大小
+                            canvasExtra.DrawBitmap(originalBitmapExtra, new SKRect(0, 0, targetWidth, targetHeight));
+                        }
+                        int spacing = 20; // 设置间距
+                        int downShift = 35; // 往下移动的距离
+                        int width = bitmap1.Width + bitmap2.Width + spacing + 100;
+                        int height = Math.Max(bitmap1.Height, bitmap2.Height);
 
-                    using (SKBitmap resultBitmap = new SKBitmap(width, height))
-                    {
-                        using (SKCanvas canvas = new SKCanvas(resultBitmap))
+                        using (SKBitmap resultBitmap = new SKBitmap(width, height))
                         {
-                            //logo
-                            canvas.DrawBitmap(bitmapExtra, 0, 0);
-                            //原图
-                            canvas.DrawBitmap(bitmap1, bitmapExtra.Width, 0);
-                            //colorbar
-                            canvas.DrawBitmap(bitmap2, bitmapExtra.Width + bitmap1.Width + spacing, downShift);
-                            // 添加上方的黄色文字
-                            using (var paint = new SKPaint())
+                            using (SKCanvas canvas = new SKCanvas(resultBitmap))
                             {
-                                paint.Color = SKColors.Yellow;
-                                paint.TextSize = 18;
-                                canvas.DrawText(top, bitmapExtra.Width + bitmap1.Width + spacing - 8, downShift - 5, paint);
+                                //logo
+                                canvas.DrawBitmap(bitmapExtra, 0, 0);
+                                //原图
+                                canvas.DrawBitmap(bitmap1, bitmapExtra.Width, 0);
+                                //colorbar
+                                canvas.DrawBitmap(bitmap2, bitmapExtra.Width + bitmap1.Width + spacing, downShift);
+                                // 添加上方的黄色文字
+                                using (var paint = new SKPaint())
+                                {
+                                    paint.Color = SKColors.Yellow;
+                                    paint.TextSize = 18;
+                                    canvas.DrawText(top, bitmapExtra.Width + bitmap1.Width + spacing - 8, downShift - 5, paint);
+                                }
+                                // 添加下方的黄色文字
+                                using (var paint = new SKPaint())
+                                {
+                                    paint.Color = SKColors.Yellow;
+                                    paint.TextSize = 18;
+                                    canvas.DrawText(bottom, bitmapExtra.Width + bitmap1.Width + spacing - 9, downShift + bitmap2.Height + 15, paint);
+                                    canvas.DrawText(unit, bitmapExtra.Width + bitmap1.Width + spacing - 9, downShift + bitmap2.Height + 33, paint);
+                                }
                             }
-                            // 添加下方的黄色文字
-                            using (var paint = new SKPaint())
+                            if (resultBitmap.Width % 2 == 0 && resultBitmap.Height % 2 == 0)
                             {
-                                paint.Color = SKColors.Yellow;
-                                paint.TextSize = 18;
-                                canvas.DrawText(bottom, bitmapExtra.Width + bitmap1.Width + spacing - 9, downShift + bitmap2.Height + 15, paint);
-                                canvas.DrawText(unit, bitmapExtra.Width + bitmap1.Width + spacing - 9, downShift + bitmap2.Height + 33, paint);
-                            }
-                        }
-                        if (resultBitmap.Width % 2 == 0 && resultBitmap.Height % 2 == 0)
-                        {
-                            // 将拼接后的图片转换为 base64 编码字符串
-                            using (SKImage image = SKImage.FromBitmap(resultBitmap))
-                            using (MemoryStream outputStream = new MemoryStream())
-                            {
-                                image.Encode(SKEncodedImageFormat.Png, 100).SaveTo(outputStream);
-                                byte[] resultBytes = outputStream.ToArray();
-                                string base64ResultImage = Convert.ToBase64String(resultBytes);
-                                return base64ResultImage;
+                                // 将拼接后的图片转换为 base64 编码字符串
+                                using (SKImage image = SKImage.FromBitmap(resultBitmap))
+                                using (MemoryStream outputStream = new MemoryStream())
+                                {
+                                    image.Encode(SKEncodedImageFormat.Png, 100).SaveTo(outputStream);
+                                    byte[] resultBytes = outputStream.ToArray();
+                                    string base64ResultImage = Convert.ToBase64String(resultBytes);
+                                    return base64ResultImage;
+                                }
                             }
-                        }
-                        else
-                        {
-                            int newWidth = resultBitmap.Width % 2 == 0 ? resultBitmap.Width : resultBitmap.Width - 1;
-                            int newHeight = resultBitmap.Height % 2 == 0 ? resultBitmap.Height : resultBitmap.Height - 1;
-                            var resultBitmapSmall = resultBitmap.Resize(new SKImageInfo(newWidth, newHeight), SKFilterQuality.High);
-                            // 将拼接后的图片转换为 base64 编码字符串
-                            using (SKImage image = SKImage.FromBitmap(resultBitmapSmall))
-                            using (MemoryStream outputStream = new MemoryStream())
+                            else
                             {
-                                image.Encode(SKEncodedImageFormat.Png, 100).SaveTo(outputStream);
-                                byte[] resultBytes = outputStream.ToArray();
-                                string base64ResultImage = Convert.ToBase64String(resultBytes);
-                                return base64ResultImage;
+                                int newWidth = resultBitmap.Width % 2 == 0 ? resultBitmap.Width : resultBitmap.Width - 1;
+                                int newHeight = resultBitmap.Height % 2 == 0 ? resultBitmap.Height : resultBitmap.Height - 1;
+                                var resultBitmapSmall = resultBitmap.Resize(new SKImageInfo(newWidth, newHeight), SKFilterQuality.High);
+                                // 将拼接后的图片转换为 base64 编码字符串
+                                using (SKImage image = SKImage.FromBitmap(resultBitmapSmall))
+                                using (MemoryStream outputStream = new MemoryStream())
+                                {
+                                    image.Encode(SKEncodedImageFormat.Png, 100).SaveTo(outputStream);
+                                    byte[] resultBytes = outputStream.ToArray();
+                                    string base64ResultImage = Convert.ToBase64String(resultBytes);
+                                    return base64ResultImage;
+                                }
                             }
                         }
                     }

+ 31 - 29
Service/AIDiagnosisService.Vet.cs

@@ -52,38 +52,40 @@ namespace WingAIDiagnosisService.Service
                 byte[] imageBytes = Convert.FromBase64String(imageReq.ImageBase64String);
                 using (var bitmap = CreateBitmap(imageBytes))
                 {
-                    var rowImage = new RawImage(bitmap.Bytes, imageReq.Width, imageReq.Height, MapTo((SKColorType)imageReq.SKColorType));
-                    var rectReq = request.RectInfo;
-                    var rect = new Rect(rectReq.Left, rectReq.Top, rectReq.Width, rectReq.Height);
-                    var autoRes = VetAutoTrace.ProcessOneImage(rowImage, rect);
-                    if (autoRes != null && autoRes.Any())
+                    using (var rowImage = new RawImage(bitmap.Bytes, imageReq.Width, imageReq.Height, MapTo((SKColorType)imageReq.SKColorType)))
                     {
-                        foreach (var key in autoRes.Keys)
+                        var rectReq = request.RectInfo;
+                        var rect = new Rect(rectReq.Left, rectReq.Top, rectReq.Width, rectReq.Height);
+                        var autoRes = VetAutoTrace.ProcessOneImage(rowImage, rect);
+                        if (autoRes != null && autoRes.Any())
                         {
-                            var item = autoRes[key];
-                            var traceInfo = new PWTraceDTO();
-                            traceInfo.EnableCalCycle = item.enableCalCycle;
-                            traceInfo.Contour = item.Contour?.Select(c => new PWTracePointDTO
+                            foreach (var key in autoRes.Keys)
                             {
-                                X = c.X,
-                                Y = c.Y,
-                            })?.ToList() ?? new List<PWTracePointDTO>();
-                            traceInfo.CycleInfos = item.CycleInfos?.Select(c => new PWTraceCycleDTO
-                            {
-                                CycleStart = c.CycleStart,
-                                CycleEnd = c.CycleEnd,
-                                Epeak = c.Epeak,
-                                Apeak = c.Apeak,
-                            })?.ToList() ?? new List<PWTraceCycleDTO>();
-                            traceInfo.BestCycles = new PWTraceBestCycleDTO
-                            {
-                                OneBestCycle = new PWTraceBestCycleIndexDTO { BestStart = item.BestCycles.OneBestCycle.BestStart, BestEnd = item.BestCycles.OneBestCycle.BestEnd },
-                                TwoBestCycle = new PWTraceBestCycleIndexDTO { BestStart = item.BestCycles.TwoBestCycle.BestStart, BestEnd = item.BestCycles.TwoBestCycle.BestEnd },
-                                ThreeBestCycle = new PWTraceBestCycleIndexDTO { BestStart = item.BestCycles.ThreeBestCycle.BestStart, BestEnd = item.BestCycles.ThreeBestCycle.BestEnd },
-                                FourBestCycle = new PWTraceBestCycleIndexDTO { BestStart = item.BestCycles.FourBestCycle.BestStart, BestEnd = item.BestCycles.FourBestCycle.BestEnd },
-                                FiveBestCycle = new PWTraceBestCycleIndexDTO { BestStart = item.BestCycles.FiveBestCycle.BestStart, BestEnd = item.BestCycles.FiveBestCycle.BestEnd },
-                            };
-                            resultData.PWTraceInfos.Add((int)key, traceInfo);
+                                var item = autoRes[key];
+                                var traceInfo = new PWTraceDTO();
+                                traceInfo.EnableCalCycle = item.enableCalCycle;
+                                traceInfo.Contour = item.Contour?.Select(c => new PWTracePointDTO
+                                {
+                                    X = c.X,
+                                    Y = c.Y,
+                                })?.ToList() ?? new List<PWTracePointDTO>();
+                                traceInfo.CycleInfos = item.CycleInfos?.Select(c => new PWTraceCycleDTO
+                                {
+                                    CycleStart = c.CycleStart,
+                                    CycleEnd = c.CycleEnd,
+                                    Epeak = c.Epeak,
+                                    Apeak = c.Apeak,
+                                })?.ToList() ?? new List<PWTraceCycleDTO>();
+                                traceInfo.BestCycles = new PWTraceBestCycleDTO
+                                {
+                                    OneBestCycle = new PWTraceBestCycleIndexDTO { BestStart = item.BestCycles.OneBestCycle.BestStart, BestEnd = item.BestCycles.OneBestCycle.BestEnd },
+                                    TwoBestCycle = new PWTraceBestCycleIndexDTO { BestStart = item.BestCycles.TwoBestCycle.BestStart, BestEnd = item.BestCycles.TwoBestCycle.BestEnd },
+                                    ThreeBestCycle = new PWTraceBestCycleIndexDTO { BestStart = item.BestCycles.ThreeBestCycle.BestStart, BestEnd = item.BestCycles.ThreeBestCycle.BestEnd },
+                                    FourBestCycle = new PWTraceBestCycleIndexDTO { BestStart = item.BestCycles.FourBestCycle.BestStart, BestEnd = item.BestCycles.FourBestCycle.BestEnd },
+                                    FiveBestCycle = new PWTraceBestCycleIndexDTO { BestStart = item.BestCycles.FiveBestCycle.BestStart, BestEnd = item.BestCycles.FiveBestCycle.BestEnd },
+                                };
+                                resultData.PWTraceInfos.Add((int)key, traceInfo);
+                            }
                         }
                     }
                 }

+ 4 - 2
Service/AIDiagnosisService.cs

@@ -1780,8 +1780,10 @@ namespace WingAIDiagnosisService.Service
                         var image = imageData.GetImage(i);
                         using (var bitmap = CreateBitmap(image))
                         {
-                            var rawImage = new RawImage(bitmap.Bytes, bitmap.Width, bitmap.Height, MapTo(bitmap.ColorType));
-                            _diagSystem.PushOneBatchOfImagesAsync(diagId, new List<RawImage> { rawImage });
+                            using (var rawImage = new RawImage(bitmap.Bytes, bitmap.Width, bitmap.Height, MapTo(bitmap.ColorType)))
+                            {
+                                _diagSystem.PushOneBatchOfImagesAsync(diagId, new List<RawImage> { rawImage });
+                            }
                         }
                     }
                     results = _diagSystem.GetEvaluationsOfPushedMultipleImageBatches(diagId);

+ 108 - 102
URMManage/URMProcess.cs

@@ -281,34 +281,36 @@ namespace WingAIDiagnosisService.URMManage
             SKImageInfo info = new SKImageInfo(ScreenWidth, ScreenHeight, SKColorType.Bgra8888, SKAlphaType.Unpremul);
 
             // Create an SKBitmap with the given SKImageInfo
-            SKBitmap skBitmap = new SKBitmap(info);
-            // Copy the pixel data from the imagePixels array to the SKBitmap
-            using (SKImage skImage = SKImage.FromPixelCopy(info, imagePixels))
+            using (SKBitmap skBitmap = new SKBitmap(info))
             {
-                skImage?.ReadPixels(skBitmap.Info, skBitmap.GetPixels(), skBitmap.RowBytes, 0, 0);
-                if (Mixflag == 1)
+                // Copy the pixel data from the imagePixels array to the SKBitmap
+                using (SKImage skImage = SKImage.FromPixelCopy(info, imagePixels))
                 {
-                    for (int y = 0; y < skBitmap.Height; y++)
+                    skImage?.ReadPixels(skBitmap.Info, skBitmap.GetPixels(), skBitmap.RowBytes, 0, 0);
+                    if (Mixflag == 1)
                     {
-                        for (int x = 0; x < skBitmap.Width; x++)
+                        for (int y = 0; y < skBitmap.Height; y++)
                         {
-                            SKColor pixelColor = skBitmap.GetPixel(x, y);
-
-                            if (pixelColor.Alpha == 255 && pixelColor.Red == 0 && pixelColor.Green == 0 && pixelColor.Blue == 0)
+                            for (int x = 0; x < skBitmap.Width; x++)
                             {
-                                SKColor modifiedColor = new SKColor(0, 0, 0, 128); // 将全黑像素设置为50%透明
-                                skBitmap.SetPixel(x, y, modifiedColor);
+                                SKColor pixelColor = skBitmap.GetPixel(x, y);
+
+                                if (pixelColor.Alpha == 255 && pixelColor.Red == 0 && pixelColor.Green == 0 && pixelColor.Blue == 0)
+                                {
+                                    SKColor modifiedColor = new SKColor(0, 0, 0, 128); // 将全黑像素设置为50%透明
+                                    skBitmap.SetPixel(x, y, modifiedColor);
+                                }
                             }
                         }
                     }
                 }
-            }
-            using (var image = SKImage.FromBitmap(skBitmap))
-            using (var data = image.Encode(SKEncodedImageFormat.Png, 100))
-            {
-                byte[] imageBytes = data.ToArray();
-                string base64String = Convert.ToBase64String(imageBytes);
-                return base64String;
+                using (var image = SKImage.FromBitmap(skBitmap))
+                using (var data = image.Encode(SKEncodedImageFormat.Png, 100))
+                {
+                    byte[] imageBytes = data.ToArray();
+                    string base64String = Convert.ToBase64String(imageBytes);
+                    return base64String;
+                }
             }
         }
 
@@ -403,18 +405,20 @@ namespace WingAIDiagnosisService.URMManage
             SKImageInfo info = new SKImageInfo(ScreenWidth, ScreenHeight, SKColorType.Bgra8888, SKAlphaType.Unpremul);
 
             // Create an SKBitmap with the given SKImageInfo
-            SKBitmap skBitmap = new SKBitmap(info);
-            // Copy the pixel data from the imagePixels array to the SKBitmap
-            using (SKImage skImage = SKImage.FromPixelCopy(info, imagePixels))
-            {
-                skImage.ReadPixels(skBitmap.Info, skBitmap.GetPixels(), skBitmap.RowBytes, 0, 0);
-            }
-            using (var image = SKImage.FromBitmap(skBitmap))
-            using (var data = image.Encode(SKEncodedImageFormat.Png, 100))
+            using (SKBitmap skBitmap = new SKBitmap(info))
             {
-                byte[] imageBytes = data.ToArray();
-                string base64String = Convert.ToBase64String(imageBytes);
-                return base64String;
+                // Copy the pixel data from the imagePixels array to the SKBitmap
+                using (SKImage skImage = SKImage.FromPixelCopy(info, imagePixels))
+                {
+                    skImage.ReadPixels(skBitmap.Info, skBitmap.GetPixels(), skBitmap.RowBytes, 0, 0);
+                }
+                using (var image = SKImage.FromBitmap(skBitmap))
+                using (var data = image.Encode(SKEncodedImageFormat.Png, 100))
+                {
+                    byte[] imageBytes = data.ToArray();
+                    string base64String = Convert.ToBase64String(imageBytes);
+                    return base64String;
+                }
             }
         }
 
@@ -436,94 +440,96 @@ namespace WingAIDiagnosisService.URMManage
         {
             SKImageInfo info = new SKImageInfo(10, 128, SKColorType.Bgra8888, SKAlphaType.Unpremul);
             // Create an SKBitmap with the given SKImageInfo
-            SKBitmap bitmap = new SKBitmap(info);
-            var res = GetIntPow();
-            var ismidecenter = res.Item1;
-            var intpow = res.Item2;//通过修改这个值 colorbar的颜色会有变化,视频的话这个是1
-            var urmcolormapname = getColormapname((int)_urmType.Current);
-            var colorbarTable = GetURMColorMap(urmcolormapname);
-            var tablelength = colorbarTable.Length / 4;
-            byte[] rgbTable = new byte[tablelength * 3];
-            var midlength = tablelength / 2;
-            double midpow = Math.Pow((double)(midlength), intpow);
-            double maxpow = Math.Pow((double)(tablelength - 1), intpow);
-            byte* source = (byte*)colorbarTable.Address;
-            for (int i = 0; i < tablelength; i++)
+            using (SKBitmap bitmap = new SKBitmap(info))
             {
-                int index = i;
-                if (ismidecenter)
+                var res = GetIntPow();
+                var ismidecenter = res.Item1;
+                var intpow = res.Item2;//通过修改这个值 colorbar的颜色会有变化,视频的话这个是1
+                var urmcolormapname = getColormapname((int)_urmType.Current);
+                var colorbarTable = GetURMColorMap(urmcolormapname);
+                var tablelength = colorbarTable.Length / 4;
+                byte[] rgbTable = new byte[tablelength * 3];
+                var midlength = tablelength / 2;
+                double midpow = Math.Pow((double)(midlength), intpow);
+                double maxpow = Math.Pow((double)(tablelength - 1), intpow);
+                byte* source = (byte*)colorbarTable.Address;
+                for (int i = 0; i < tablelength; i++)
                 {
-                    if (i > midlength)
+                    int index = i;
+                    if (ismidecenter)
                     {
-                        index = (int)(Math.Pow((double)i - midlength, intpow) / midpow * (midlength)) +
-                                midlength;
+                        if (i > midlength)
+                        {
+                            index = (int)(Math.Pow((double)i - midlength, intpow) / midpow * (midlength)) +
+                                    midlength;
+                        }
+                        else if (i < midlength)
+                        {
+                            index = midlength - (int)(Math.Pow((double)midlength - i, intpow) / midpow *
+                                                      (midlength));
+                        }
                     }
-                    else if (i < midlength)
+                    else
                     {
-                        index = midlength - (int)(Math.Pow((double)midlength - i, intpow) / midpow *
-                                                  (midlength));
+                        index = (int)(Math.Pow((double)i, intpow) / maxpow * (tablelength - 1));
                     }
-                }
-                else
-                {
-                    index = (int)(Math.Pow((double)i, intpow) / maxpow * (tablelength - 1));
-                }
 
-                if (index < 0)
-                    index = 0;
-                if (index > tablelength - 1)
-                    index = tablelength - 1;
-                byte r = (byte)source[4 * index + 2];
-                byte g = (byte)source[4 * index + 1];
-                byte b = (byte)source[4 * index];
-                rgbTable[i * 3] = r;
-                rgbTable[i * 3 + 1] = g;
-                rgbTable[i * 3 + 2] = b;
-            }
-            // Different platforms have different color formats,
-            // such as ARGB for Windows and ABGR for Android.
-            // So by default its default value is TRUE, which is FALSE on Android
-            bool isArgbFormat = (ServiceManager.Os != VinnoOsPlatform.Android);
-
-            int height = bitmap.Height;
-            int width = bitmap.Width;
-            SKColor* pixels = (SKColor*)bitmap.GetPixels();
-            for (int y = 0; y < height; y++)
-            {
-                int col = y * tablelength / height;
-                int rowStart = (height - 1 - y) * width;
-
-                for (int x = 0; x < width; x++)
+                    if (index < 0)
+                        index = 0;
+                    if (index > tablelength - 1)
+                        index = tablelength - 1;
+                    byte r = (byte)source[4 * index + 2];
+                    byte g = (byte)source[4 * index + 1];
+                    byte b = (byte)source[4 * index];
+                    rgbTable[i * 3] = r;
+                    rgbTable[i * 3 + 1] = g;
+                    rgbTable[i * 3 + 2] = b;
+                }
+                // Different platforms have different color formats,
+                // such as ARGB for Windows and ABGR for Android.
+                // So by default its default value is TRUE, which is FALSE on Android
+                bool isArgbFormat = (ServiceManager.Os != VinnoOsPlatform.Android);
+
+                int height = bitmap.Height;
+                int width = bitmap.Width;
+                SKColor* pixels = (SKColor*)bitmap.GetPixels();
+                for (int y = 0; y < height; y++)
                 {
-                    int index = col;
+                    int col = y * tablelength / height;
+                    int rowStart = (height - 1 - y) * width;
 
-                    try
+                    for (int x = 0; x < width; x++)
                     {
-                        SKColor color;
-                        if (isArgbFormat)
+                        int index = col;
+
+                        try
                         {
-                            color = new SKColor(rgbTable[index * 3], rgbTable[index * 3 + 1], rgbTable[index * 3 + 2]);
+                            SKColor color;
+                            if (isArgbFormat)
+                            {
+                                color = new SKColor(rgbTable[index * 3], rgbTable[index * 3 + 1], rgbTable[index * 3 + 2]);
+                            }
+                            else
+                            {
+                                color = new SKColor(rgbTable[index * 3 + 2], rgbTable[index * 3 + 1], rgbTable[index * 3]);
+                            }
+
+                            pixels[rowStart + x] = color;
                         }
-                        else
+                        catch (Exception ex)
                         {
-                            color = new SKColor(rgbTable[index * 3 + 2], rgbTable[index * 3 + 1], rgbTable[index * 3]);
+                            Logger.WriteLineError($"x:{x}, y:{y}, index:{index}, ex:{ex.Message}");
+                            throw;
                         }
-
-                        pixels[rowStart + x] = color;
-                    }
-                    catch (Exception ex)
-                    {
-                        Logger.WriteLineError($"x:{x}, y:{y}, index:{index}, ex:{ex.Message}");
-                        throw;
                     }
                 }
-            }
-            using (var image = SKImage.FromBitmap(bitmap))
-            using (var data = image.Encode(SKEncodedImageFormat.Png, 100))
-            {
-                byte[] imageBytes = data.ToArray();
-                string base64String = Convert.ToBase64String(imageBytes);
-                return base64String;
+                using (var image = SKImage.FromBitmap(bitmap))
+                using (var data = image.Encode(SKEncodedImageFormat.Png, 100))
+                {
+                    byte[] imageBytes = data.ToArray();
+                    string base64String = Convert.ToBase64String(imageBytes);
+                    return base64String;
+                }
             }
         }