TImage не имеет никакого способа определить размер графического изображения, которое оно содержит в данный момент времени. Это не его работа. Его работа заключается только в отображении вещей. Объект TGraphic управляет представлением в памяти, а также определяет, как рисовать себя на данном холсте. TImage действительно ничего не знает вообще. TGraphic может, но он не обязательно отслеживает размер файла; это может отличаться от объема памяти, необходимого для хранения данных в памяти.
Способ определения размера файла заключается в том, чтобы имел файл или что-то похожее на файл, например поток. Как вы упоминали в своем комментарии, вы можете сохранить изображение в поток, а затем узнать размер потока.
function GetGraphicSize(g: TGraphic): Integer;
var
ms: TStream;
begin
ms := TMemoryStream.Create;
try
g.SaveToStream(ms);
Result := ms.Size;
finally
ms.Free;
end;
end;
Если это слишком дорого для вычисления каждый раз, когда вам нужен размер, запомните размер с первого раза, когда вы видите изображение, чтобы вам не приходилось каждый раз заново его обрабатывать. Как список миниатюр получил свои изображения для начала? Если они получены из файлов, то вы могли бы просто получить размер файла при создании миниатюр.