Не отображает все картинки корректно
Добавлено: 30 окт 2014, 14:12
Добрый день!
Есть отчёт со следующей структурой:
Page > DataBand > Image.
Далее из БД Oracle select'ом "вытягиваем" данные, где есть поле sertificate_body, представляющее массив byte[], но реально это обыкновенный jpeg.
В свойстве DataColumn компонента Image установлено поле из которого получаем данные. Всё работает и даже отображается.
Однако, при более подробном сравнении отображаемых данных и в полях таблицы базы данных есть различия, а именно - выводятся не все страницы.
Для примера я брал 182 страницы, каждая в среднем размеров 250Кб, итого около 40Мб.
Если запустить дизайнер и нажать Preview, то можно увитедь "Report Rendering Messages" такое сообщение для 82 картинок: "Expression in ImageData property of 'Image1' can't be evaluated!". В итоге, они отображаются как белые листы, хотя реально они есть.
Более того, если в источнике данных нажать "View data", то всё выбирается корректно, и можно увидеть даже все эти картинки в соответствующей колонке, однако при выводе компонент Image, выдаёт вышеописанное сообщение, а иногда даже "System.OutOfMemory". В последнем случае, программа занимает в памяти почему-то 1.5Gb, хотя реально там 40Mb всего, не ясно, но не суть.
Сразу оговорюсь, что пробовал все возможные способы решения проблемы, в т.ч. динамически создавал отчёт, - результаты те же.
Мало того, пробовал убирать из свойства DataColumn данные и прописывал такой код в событии GetImageData компонента Image:
Не помогло, по-прежнему OutOfMemory.
Пробовал так:Тот же результат.
P.S. Отчёт во вложении.
Есть отчёт со следующей структурой:
Page > DataBand > Image.
Далее из БД Oracle select'ом "вытягиваем" данные, где есть поле sertificate_body, представляющее массив byte[], но реально это обыкновенный jpeg.
В свойстве DataColumn компонента Image установлено поле из которого получаем данные. Всё работает и даже отображается.
Однако, при более подробном сравнении отображаемых данных и в полях таблицы базы данных есть различия, а именно - выводятся не все страницы.
Для примера я брал 182 страницы, каждая в среднем размеров 250Кб, итого около 40Мб.
Если запустить дизайнер и нажать Preview, то можно увитедь "Report Rendering Messages" такое сообщение для 82 картинок: "Expression in ImageData property of 'Image1' can't be evaluated!". В итоге, они отображаются как белые листы, хотя реально они есть.
Более того, если в источнике данных нажать "View data", то всё выбирается корректно, и можно увидеть даже все эти картинки в соответствующей колонке, однако при выводе компонент Image, выдаёт вышеописанное сообщение, а иногда даже "System.OutOfMemory". В последнем случае, программа занимает в памяти почему-то 1.5Gb, хотя реально там 40Mb всего, не ясно, но не суть.
Сразу оговорюсь, что пробовал все возможные способы решения проблемы, в т.ч. динамически создавал отчёт, - результаты те же.
Мало того, пробовал убирать из свойства DataColumn данные и прописывал такой код в событии GetImageData компонента Image:
Код: Выделить всё
System.IO.MemoryStream ms = new System.IO.MemoryStream(qrMain.SERTIFICATE_BODY);
System.Drawing.Image img = System.Drawing.Image.FromStream(ms);
e.Value = img;
ms.Dispose();
Пробовал так:
Код: Выделить всё
e.Value = StiImageHelper.GetImageFromObject(qrMain.SERTIFICATE_BODY);
P.S. Отчёт во вложении.