Максимальный размер TImageviewer

Кто-нибудь знает, какова максимальная ширина и высота растрового изображения в FireMonkey TImageViewer? Я рисую векторную графику в TImageViewer. Я могу увеличить только до определенного значения, после чего получаю исключение памяти.


person Christo    schedule 14.06.2013    source источник
comment
Что это за определенное значение, которое вызывает исключение? Что представляет собой исключение (точное сообщение об исключении, которое вы получаете)? Довольно сложно ответить на вопрос, который спрашивает: «Как мне исправить неопределенное исключение, которое происходит, когда я превышаю значение, которое я не даю вам при увеличении масштаба TImageViewer?» Можете ли вы отредактировать свой вопрос и предоставить более подробную информацию? Спасибо.   -  person Ken White    schedule 15.06.2013
comment
Размер растрового изображения не ограничен. Пожалуйста, создайте простой пример того, как воспроизвести вашу проблему.   -  person Peter    schedule 16.06.2013
comment
@PeterVonča Я тоже заметил этот предел. Если вы попытаетесь загрузить большое изображение (например, 8000 X 5000 пикселей) в TImage или TBitmap, вы получите исключение памяти.   -  person AvgustinTomsic    schedule 02.07.2013
comment
Я не совсем уверен, что это за определенное значение. Это то, что я пытаюсь понять. Как заявил Питер Вонча, когда изображение слишком большое, возникает исключение памяти. Если я могу вычислить максимальный размер изображения, я могу встроить проверки, чтобы изображение не превышало максимальное значение.   -  person Christo    schedule 02.07.2013
comment
@slotomo, когда этот вопрос был опубликован, я проверил его на своей машине, и он отлично работает независимо от размера. Только что проверил еще раз. Изображение 8000x5000 px в формате jpeg и bmp, загруженное в TImage или TBitmap, у меня отлично работает. Вот почему я сказал, что он должен опубликовать простой пример того, как воспроизвести, потому что я просто не могу вызвать это исключение. Протестировано как на XE3, так и на XE4.   -  person Peter    schedule 02.07.2013
comment
@PeterVonča Я подготовил небольшой тестовый проект в XE3, где вы можете смоделировать эту проблему. Ссылка Существует ZIP-файл с двумя изображениями. Если вы попытаетесь загрузить большой файл, вы получите исключение.   -  person AvgustinTomsic    schedule 03.07.2013
comment
Это простой пример, который дает мне ошибку памяти: procedure TForm8.Button1Click(Sender: TObject); begin ImageViewer1.Bitmap := TBitmap.Create(9000,8000); конец;   -  person Christo    schedule 03.07.2013
comment
@slotomo, теперь я получаю исключение, единственная причина, по которой я не получил его раньше, потому что, учитывая ваш предыдущий упомянутый размер (8000x5000 px), он отлично работает для меня, но в проекте 8800x5600 вызывает исключение, так что действительно, кажется, есть ограничение .   -  person Peter    schedule 03.07.2013
comment
@PeterVonča Я написал эти числа (8000x5000) по памяти. Я просто хотел подтвердить пользователю 1980303, что такое ограничение действительно существует, потому что я тоже заметил эту проблему некоторое время назад.   -  person AvgustinTomsic    schedule 03.07.2013


Ответы (1)


Я проверил это на двух разных компьютерах, и оказалось, что фактический предел размера растрового изображения в Firemonkey составляет 8000x8000 пикселей, что означает, что ширина и высота соответственно ограничены размером 8000 пикселей.

Это то, что я наблюдал, если у кого-то будет другой результат, сообщите мне.

Как вы планируете обойти это, зависит от вас, я бы предложил разбить исходное изображение на несколько частей, чтобы ни одна из частей не превышала ограничение, а затем назначить каждую часть другому компоненту Bitmap (например, TImageViewer), а затем сделать так, чтобы все это пришло вместе в целом.

person Peter    schedule 03.07.2013
comment
Спасибо. Я просто проверю, чтобы подтвердить, прежде чем отметить это как ответ. Только один вопрос: означает ли это, что ширина и высота ограничены 8000 соответственно, или общий предел пикселей составляет 8000 x 8000, следовательно, могу ли я установить растровое изображение на 9000 x 7000 пикселей? ps..Можно ли изменить мою учетную запись с пользователя 1980303? :( - person Christo; 03.07.2013
comment
@user1980303 user1980303, ширина и высота ограничены 8000 пикселями соответственно, как только любой из них превысит ограничение, будет выдано исключение. - person Peter; 03.07.2013
comment
На самом деле ограничения составляют 8192 x 8192 пикселей, если вы используете Direct 10/Direct2D (Delphi использует Direct 10, в Direct 11 вы можете создавать растровые изображения до 16384 x 16384 пикселей). Если вы добавите GlobalUseDX10 := False; и GlobalUseDirect2D := False; для вашего проекта вы можете создавать большие растровые изображения (я думаю, до 32767 пикселей x 32767 пикселей). - person pani; 27.11.2013