Fix crop bounding box logic to use most frequent crop (mode) instead of bounding box
This commit is contained in:
@@ -44,34 +44,9 @@ namespace JellyfinPlugin
|
||||
|
||||
if (totalFrames == 0) return string.Empty;
|
||||
|
||||
var validCrops = crops.Where(kvp => (double)kvp.Value / totalFrames > 0.05).ToList();
|
||||
if (!validCrops.Any())
|
||||
{
|
||||
validCrops = crops.OrderByDescending(kvp => kvp.Value).Take(1).ToList();
|
||||
}
|
||||
var bestCrop = crops.OrderByDescending(kvp => kvp.Value).FirstOrDefault().Key;
|
||||
|
||||
int minX = int.MaxValue, minY = int.MaxValue, maxXW = 0, maxYH = 0;
|
||||
|
||||
foreach (var kvp in validCrops)
|
||||
{
|
||||
var parts = kvp.Key.Split(':');
|
||||
if (parts.Length == 4 &&
|
||||
int.TryParse(parts[0], out int w) && int.TryParse(parts[1], out int h) &&
|
||||
int.TryParse(parts[2], out int x) && int.TryParse(parts[3], out int y))
|
||||
{
|
||||
minX = Math.Min(minX, x);
|
||||
minY = Math.Min(minY, y);
|
||||
maxXW = Math.Max(maxXW, x + w);
|
||||
maxYH = Math.Max(maxYH, y + h);
|
||||
}
|
||||
}
|
||||
|
||||
int finalW = maxXW - minX;
|
||||
int finalH = maxYH - minY;
|
||||
|
||||
if (finalW <= 0 || finalH <= 0) return string.Empty;
|
||||
|
||||
return $"{finalW}:{finalH}:{minX}:{minY}";
|
||||
return bestCrop ?? string.Empty;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user