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;
|
if (totalFrames == 0) return string.Empty;
|
||||||
|
|
||||||
var validCrops = crops.Where(kvp => (double)kvp.Value / totalFrames > 0.05).ToList();
|
var bestCrop = crops.OrderByDescending(kvp => kvp.Value).FirstOrDefault().Key;
|
||||||
if (!validCrops.Any())
|
|
||||||
{
|
|
||||||
validCrops = crops.OrderByDescending(kvp => kvp.Value).Take(1).ToList();
|
|
||||||
}
|
|
||||||
|
|
||||||
int minX = int.MaxValue, minY = int.MaxValue, maxXW = 0, maxYH = 0;
|
return bestCrop ?? string.Empty;
|
||||||
|
|
||||||
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}";
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user