imageCellDimensions function
Determines the approximate cell dimensions for displaying an image.
Implementation
(int columns, int rows) imageCellDimensions(
img.Image image, {
int? maxColumns,
int? maxRows,
}) {
// Assume a cell is roughly 2:1 pixel ratio (e.g., 8×18 font).
const double cellAspect = 0.45; // width/height per cell
final imageAspect = image.width / image.height;
var columns = (image.height * cellAspect * imageAspect).ceil();
var rows = image.height ~/ 18 + 1; // ~18px per row
if (maxColumns != null && columns > maxColumns) {
final scale = maxColumns / columns;
columns = maxColumns;
rows = (rows * scale).ceil();
}
final effectiveMaxRows = maxRows ?? _defaultMaxRows;
if (rows > effectiveMaxRows) {
final scale = effectiveMaxRows / rows;
rows = effectiveMaxRows;
columns = (columns * scale).ceil();
}
return (columns.clamp(1, 200), rows.clamp(1, 100));
}