put better caption in result image

This commit is contained in:
Alex Bezdieniezhnykh
2025-04-03 11:56:01 +03:00
parent c9800107a6
commit 36b3bf1712
2 changed files with 30 additions and 1 deletions
@@ -0,0 +1,28 @@
using System.Drawing;
namespace Azaion.Common.Extensions;
public static class GraphicsExtensions
{
public static void DrawTextBox(this Graphics g, string text, PointF position, Brush background, Brush foreground)
{
using var textFont = new Font(FontFamily.GenericSerif, 14);
using var stringFormat = new StringFormat();
stringFormat.LineAlignment = StringAlignment.Near;
stringFormat.Alignment = StringAlignment.Center;
var padding = 1.0f;
var textSize = g.MeasureString(text, textFont);
var backgroundRect = new RectangleF(
position.X - textSize.Width / 2.0f - padding,
position.Y - padding,
textSize.Width + 2 * padding,
textSize.Height + 2 * padding
);
g.FillRectangle(background, backgroundRect);
g.DrawString(text, textFont, foreground, position, stringFormat);
}
}
+2 -1
View File
@@ -278,8 +278,9 @@ public class GalleryService(
var brush = new SolidBrush(Color.FromArgb(color.A, color.R, color.G, color.B)); var brush = new SolidBrush(Color.FromArgb(color.A, color.R, color.G, color.B));
var det = new CanvasLabel(detection, new Size(originalImage.Width, originalImage.Height)); var det = new CanvasLabel(detection, new Size(originalImage.Width, originalImage.Height));
g.DrawRectangle(new Pen(brush, width: 3), (float)det.X, (float)det.Y, (float)det.Width, (float)det.Height); g.DrawRectangle(new Pen(brush, width: 3), (float)det.X, (float)det.Y, (float)det.Width, (float)det.Height);
var label = detection.Confidence >= 0.995 ? detClass.UIName : $"{detClass.UIName}: {detection.Confidence * 100:F0}%"; var label = detection.Confidence >= 0.995 ? detClass.UIName : $"{detClass.UIName}: {detection.Confidence * 100:F0}%";
g.DrawString(label, new Font(FontFamily.GenericSerif, 14), brush, new PointF((float)(det.X + det.Width / 2.0), (float)det.Y)); g.DrawTextBox(label, new PointF((float)(det.X + det.Width / 2.0), (float)(det.Y - 24)), brush, Brushes.Black);
} }
originalImage.Save(Path.Combine(_dirConfig.ResultsDirectory, $"{annotation.Name}{Constants.RESULT_PREFIX}.jpg"), ImageFormat.Jpeg); originalImage.Save(Path.Combine(_dirConfig.ResultsDirectory, $"{annotation.Name}{Constants.RESULT_PREFIX}.jpg"), ImageFormat.Jpeg);
} }