Проблема с TfrPictureView

отредактировано 07:22 Раздел: FastReport 2.xx VCL
День добрый!

Имеется простейший отчет с TfrPictureView, в который загружаются изображения в формате JPEG размтерами ~900x600 и объемом ~300Кб для каждой записи.

При любом кол-ве записей BuildReport проходит нормально, а вот ShowPreparedReport может занять до 10 мин и съесть 200MB (или выпасть в Out of memory while expanding memory stream) уже при 50 записях в отчете.

Кто сталкивался с таким эффектом, подскажите как побороть!

Изображения загружаются в OnBeforePrint. Фунция, которая это делает выглядит так:

<span style='font-family:Courier'>procedure LoadPicture(PictureView: TfrPictureView; FileName: string; IsIcon: boolean = False);
var
Picture: TPicture;
begin
if (FileName='') or not FileExists(FileName) then begin
PictureView.Picture.Assign(nil);
Exit;
end;
Picture:=TPicture.Create;
Picture.LoadFromFile(FileName);
if IsIcon then
PictureView.Picture.Icon.Assign(Picture.Graphic)
else
PictureView.Picture.Bitmap.Assign(Picture.Graphic);
Picture.Free;
end;</span>

Комментарии

  • отредактировано 07:22
    900x600 bmp 24bit весит 1.6Мб, 50 записей должны съесть около 100Мб.
  • отредактировано 07:22
    В таком случае как можно выкрутиться из подобной ситуации? На ум только приходит максимально возможный ресайзин изображения, перед загрузкой его в PictureView, посколько сам PV обычно не очень большой.

    Может есть другие варианты решения проблемы?
  • отредактировано 07:22
    Когда речь идет о изображениях, вариант только один: формировать за один раз небольшое количество страниц. Можно, конечно, ресайзить картинку перед загрузкой в TFrPictureView, если обстоятельства позволяют.
  • отредактировано 07:22
    Ресайз изображений и уменьшение разрядности цвета до 15bit (непосредственно перед тем, как запихнуть их в PictureView) полностью решило проблему и со скоростью и с ресурсами при выполнении ShowPrepraredReport.

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.