diff --git a/Services/ScreenshotManager.cs b/Services/ScreenshotManager.cs
index 60e0438..803ac7d 100644
--- a/Services/ScreenshotManager.cs
+++ b/Services/ScreenshotManager.cs
@@ -519,8 +519,8 @@ namespace CtrEditor.Services
result.FileSizeBytes = fileInfo.Length;
}
- // Generar base64 si se solicita
- if (returnBase64)
+ // Generar base64 solo si se cumplen las condiciones restrictivas
+ if (returnBase64 && ShouldGenerateBase64(result))
{
using (var memoryStream = new MemoryStream())
{
@@ -530,6 +530,11 @@ namespace CtrEditor.Services
result.Base64Data = Convert.ToBase64String(memoryStream.ToArray());
}
}
+ else if (returnBase64)
+ {
+ // Informar por qué no se generó el base64
+ result.Base64SkipReason = GetBase64SkipReason(result);
+ }
result.Timestamp = DateTime.Now;
return result;
@@ -543,6 +548,62 @@ namespace CtrEditor.Services
}
}
+ ///
+ /// Determina si se debe generar base64 basado en las restricciones de tamaño y cantidad de objetos
+ ///
+ private bool ShouldGenerateBase64(ScreenshotResult result)
+ {
+ const int MAX_DIMENSION = 1024;
+
+ // Solo permitir base64 para objetos únicos
+ if (result.CaptureType == ScreenshotType.Objects && (result.CapturedObjects?.Count != 1))
+ {
+ return false;
+ }
+
+ // Verificar dimensiones de la imagen
+ if (result.Bitmap != null)
+ {
+ if (result.Bitmap.PixelWidth > MAX_DIMENSION || result.Bitmap.PixelHeight > MAX_DIMENSION)
+ {
+ return false;
+ }
+ }
+
+ // No generar base64 para canvas completo o áreas grandes
+ if (result.CaptureType == ScreenshotType.FullCanvas)
+ {
+ return false;
+ }
+
+ return true;
+ }
+
+ ///
+ /// Obtiene la razón por la cual no se generó el base64
+ ///
+ private string GetBase64SkipReason(ScreenshotResult result)
+ {
+ const int MAX_DIMENSION = 1024;
+
+ if (result.CaptureType == ScreenshotType.FullCanvas)
+ {
+ return "Base64 no generado: Canvas completo excede límites de tokens";
+ }
+
+ if (result.CaptureType == ScreenshotType.Objects && (result.CapturedObjects?.Count != 1))
+ {
+ return $"Base64 no generado: Solo se permite para objetos únicos (encontrados: {result.CapturedObjects?.Count ?? 0})";
+ }
+
+ if (result.Bitmap != null && (result.Bitmap.PixelWidth > MAX_DIMENSION || result.Bitmap.PixelHeight > MAX_DIMENSION))
+ {
+ return $"Base64 no generado: Imagen excede {MAX_DIMENSION}x{MAX_DIMENSION} píxeles (actual: {result.Bitmap.PixelWidth}x{result.Bitmap.PixelHeight})";
+ }
+
+ return "Base64 no generado: Condiciones no cumplidas";
+ }
+
#endregion
}
@@ -563,6 +624,7 @@ namespace CtrEditor.Services
public string Directory { get; set; }
public long FileSizeBytes { get; set; }
public string Base64Data { get; set; }
+ public string Base64SkipReason { get; set; }
public DateTime Timestamp { get; set; }
public bool IncludeBackground { get; set; }
public List CapturedObjects { get; set; } = new List();