Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
 Картинки больше 2ГБ  [new]
Flying-home
Member

Откуда: kart.vrostove.net
Сообщений: 14998
Наконец дошли руки до моей поделки. Сразу столкнулся с двумя проблемами.

1. При попытке открыть тиф больше 2 гигов оказалось, что TStream этого не может потому что у него лапки Longint.Объяснение и решение нашел тут. Но это пол-беды.
2. При попытке просто создать картинку и задать ей размеры 25000 на 25000 (заведомо больше 2ГБ) поймал исключение при вызове gdi32
CreateCompatibleBitmap(DC: HDC; Width, Height: Integer): HBitmap;
. А тут уже не совсем ясно. Это может быть связано с тем, что у меня в видюшке всего 2 гига памяти?

Прошу совета, в каком направлении двигаться. В общем, задача выглядит так: открываем большую-большую картинку, рисуем на ней LineTo, TextOut, сохраняем. Показывать картинку целиком я не собираюсь, только маленький кусочек для превью. Разбивать картинку на кусочки тоже не собираюсь, там на стыках слишком много лишних расчетов получится. Да и не для того я 32 гига оперативки покупал.

Delphi XE3, Windows 7 SP1 x64.
22 фев 21, 20:09    [22284875]     Ответить | Цитировать Сообщить модератору
 Re: Картинки больше 2ГБ  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 29547
Flying-home,

приложение 32бит? ну не может оно аллокировать больше 2 гиг. Что за программисты пошли, вообще ничего не знают.
22 фев 21, 20:13    [22284877]     Ответить | Цитировать Сообщить модератору
 Re: Картинки больше 2ГБ  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 52445

Flying-home
А тут уже не совсем ясно.

Что тебе неясно? Лапки не только у TStream. Забей на битмап, работай просто с массивом
пикселей.

Posted via ActualForum NNTP Server 1.5

22 фев 21, 20:21    [22284881]     Ответить | Цитировать Сообщить модератору
 Re: Картинки больше 2ГБ  [new]
Flying-home
Member

Откуда: kart.vrostove.net
Сообщений: 14998
kdv
Flying-home,

приложение 32бит? ну не может оно аллокировать больше 2 гиг. Что за программисты пошли, вообще ничего не знают.

Да не, специально скачал свежую (относительно) Дельфу, выставил в свойствах проекта таргет платформ x64.
22 фев 21, 20:26    [22284883]     Ответить | Цитировать Сообщить модератору
 Re: Картинки больше 2ГБ  [new]
Соколинский Борис
Member

Откуда: Москва
Сообщений: 14191
Flying-home
А тут уже не совсем ясно. Это может быть связано с тем, что у меня в видюшке всего 2 гига памяти?
Нет. DDB буфер в RAM сидит, и у него есть ограничение на размер. Маловероятно что мы доживем до времени когда буфер отрисовки будет рассчитан на мониторы с таким разрешением.

Flying-home

Прошу совета, в каком направлении двигаться.
В том, куда ты не хочешь.
22 фев 21, 20:28    [22284886]     Ответить | Цитировать Сообщить модератору
 Re: Картинки больше 2ГБ  [new]
Flying-home
Member

Откуда: kart.vrostove.net
Сообщений: 14998
Dimitry Sibiryakov
Flying-home
А тут уже не совсем ясно.

Что тебе неясно? Лапки не только у TStream. Забей на битмап, работай просто с массивом
пикселей.

Думаю, так и придется. А рисовать как? Самому вот это вот все реализовывать? Я хочу и полупрозрачность, и другие вкусняшки GDI.
22 фев 21, 20:29    [22284887]     Ответить | Цитировать Сообщить модератору
 Re: Картинки больше 2ГБ  [new]
Flying-home
Member

Откуда: kart.vrostove.net
Сообщений: 14998
Соколинский Борис
Flying-home
А тут уже не совсем ясно. Это может быть связано с тем, что у меня в видюшке всего 2 гига памяти?
Нет. DDB буфер в RAM сидит, и у него есть ограничение на размер. Маловероятно что мы доживем до времени когда буфер отрисовки будет рассчитан на мониторы с таким разрешением.

Flying-home

Прошу совета, в каком направлении двигаться.
В том, куда ты не хочешь.

Бить на кусочки? Грустно.
22 фев 21, 20:30    [22284888]     Ответить | Цитировать Сообщить модератору
 Re: Картинки больше 2ГБ  [new]
Соколинский Борис
Member

Откуда: Москва
Сообщений: 14191
Flying-home,
Ты хочешь сказать, что исходная картинка не из кусочков? Можно я не поверю?
22 фев 21, 20:33    [22284890]     Ответить | Цитировать Сообщить модератору
 Re: Картинки больше 2ГБ  [new]
Flying-home
Member

Откуда: kart.vrostove.net
Сообщений: 14998
Соколинский Борис
Flying-home,
Ты хочешь сказать, что исходная картинка не из кусочков? Можно я не поверю?

Ну конечно, была склеена из кусочков. Но рисовать-то удобнее на целом листе.

Кстати, есть такие картинки, которые точно не из кусочков.
https://api.discover.digitalglobe.com/show?id=103001008D9D1700
Это превьюшка снимка разрешением 0.5 метра на пиксель. Там точно больше 2 гигов.
22 фев 21, 20:40    [22284894]     Ответить | Цитировать Сообщить модератору
 Re: Картинки больше 2ГБ  [new]
Соколинский Борис
Member

Откуда: Москва
Сообщений: 14191
Flying-home,
Нет таких матриц в природе, это все панорамные съемки. И хранить их в непорезанном виде - совсем не умная идея.
22 фев 21, 20:46    [22284897]     Ответить | Цитировать Сообщить модератору
 Re: Картинки больше 2ГБ  [new]
Flying-home
Member

Откуда: kart.vrostove.net
Сообщений: 14998
Соколинский Борис
Flying-home,
Нет таких матриц в природе, это все панорамные съемки. И хранить их в непорезанном виде - совсем не умная идея.

Они хранятся продаются в непорезанном виде. И ортокоррекцию им делают тоже в непорезанном виде. Так удобнее.
Кстати, делаются они тоже целиком, за один проход. Но там по принципу сканера фотка делается, ширина снимка ограничена размером матрицы, а высота - нет.
22 фев 21, 21:05    [22284905]     Ответить | Цитировать Сообщить модератору
 Re: Картинки больше 2ГБ  [new]
Flying-home
Member

Откуда: kart.vrostove.net
Сообщений: 14998
Ладно, вернемся к нашим баранам. Если я буду резать картинки на кусочки по 2 гига, смогу ли я работать с каждым их этих кусочков в отдельном потоке?

И это. Тот же Ирфан Вью легко и быстро открывает и показывает этот тиф. Значит, он что-то знает, чего не знаем мы?
22 фев 21, 21:10    [22284908]     Ответить | Цитировать Сообщить модератору
 Re: Картинки больше 2ГБ  [new]
Соколинский Борис
Member

Откуда: Москва
Сообщений: 14191
Flying-home
Они хранятся продаются в непорезанном виде. И ортокоррекцию им делают тоже в непорезанном виде. Так удобнее.
Нифига это не удобнее. Удобно тайлы + пирамида, очень быстро получаешь и целиком в малом масштабе и нужный фрагмент в натуральном. Это пограничные случаи, все остальные в них вписываются.
Рискну предположить, что в твоем tiff-е оно и есть, только зачем-то запихнуто в один файл.

Flying-home
Но там по принципу сканера фотка делается, ширина снимка ограничена размером матрицы, а высота - нет.
Уверен?
Сомнительно что так со спутника можно снять, временной параллакс и все такое.
22 фев 21, 21:15    [22284911]     Ответить | Цитировать Сообщить модератору
 Re: Картинки больше 2ГБ  [new]
Соколинский Борис
Member

Откуда: Москва
Сообщений: 14191
Flying-home
И это. Тот же Ирфан Вью легко и быстро открывает и показывает этот тиф. Значит, он что-то знает, чего не знаем мы?
Посмотри инфу о файле. Наверняка многостраничный и первой как раз верхушка пирамиды.
22 фев 21, 21:16    [22284913]     Ответить | Цитировать Сообщить модератору
 Re: Картинки больше 2ГБ  [new]
Flying-home
Member

Откуда: kart.vrostove.net
Сообщений: 14998
Flying-home
Если я буду резать картинки на кусочки по 2 гига, смогу ли я работать с каждым их этих кусочков в отдельном потоке?

Я имею в виду, нет ли у GDI каких-то ограничений на вызов функций не из основного потока приложения?

Flying-home
Ирфан Вью легко и быстро открывает и показывает этот тиф. Значит, он что-то знает, чего не знаем мы?

Правда, он на плюсах написан.
22 фев 21, 21:21    [22284916]     Ответить | Цитировать Сообщить модератору
 Re: Картинки больше 2ГБ  [new]
Соколинский Борис
Member

Откуда: Москва
Сообщений: 14191
Flying-home
Я имею в виду, нет ли у GDI каких-то ограничений на вызов функций не из основного потока приложения?
Нет.
22 фев 21, 21:22    [22284917]     Ответить | Цитировать Сообщить модератору
 Re: Картинки больше 2ГБ  [new]
miksoft
Member

Откуда:
Сообщений: 38693
Flying-home
Тот же Ирфан Вью легко и быстро открывает и показывает этот тиф. Значит, он что-то знает, чего не знаем мы?
Есть идея скормить этот тиф какому-нибудь опенсорсовому просмотрщику. Если он с ней справится, то можно будет посмотреть в код.

Можете дать образец такого тифа?
22 фев 21, 21:23    [22284918]     Ответить | Цитировать Сообщить модератору
 Re: Картинки больше 2ГБ  [new]
Flying-home
Member

Откуда: kart.vrostove.net
Сообщений: 14998
Соколинский Борис
Flying-home
Они хранятся продаются в непорезанном виде. И ортокоррекцию им делают тоже в непорезанном виде. Так удобнее.
Нифига это не удобнее. Удобно тайлы + пирамида, очень быстро получаешь и целиком в малом масштабе и нужный фрагмент в натуральном. Это пограничные случаи, все остальные в них вписываются.
Рискну предположить, что в твоем tiff-е оно и есть, только зачем-то запихнуто в один файл.

Flying-home
Но там по принципу сканера фотка делается, ширина снимка ограничена размером матрицы, а высота - нет.
Уверен?
Сомнительно что так со спутника можно снять, временной параллакс и все такое.


1. Тайлы начинают рулить, когда приходится показывать эту картинку на экране. А на стадии обработки одним куском удобнее. Ну представь, тебе надо нарисовать горизонталь, которая тянется через всю картинку. Или любую другую линию. На тайлах никто не рисует.

2. Да, уверен. Просто по-другому никак.
22 фев 21, 21:25    [22284920]     Ответить | Цитировать Сообщить модератору
 Re: Картинки больше 2ГБ  [new]
Flying-home
Member

Откуда: kart.vrostove.net
Сообщений: 14998
miksoft
Flying-home
Тот же Ирфан Вью легко и быстро открывает и показывает этот тиф. Значит, он что-то знает, чего не знаем мы?
Есть идея скормить этот тиф какому-нибудь опенсорсовому просмотрщику. Если он с ней справится, то можно будет посмотреть в код.

Можете дать образец такого тифа?

Классная идея! Ща выложу.
22 фев 21, 21:26    [22284921]     Ответить | Цитировать Сообщить модератору
 Re: Картинки больше 2ГБ  [new]
Соколинский Борис
Member

Откуда: Москва
Сообщений: 14191
Flying-home
Ну представь, тебе надо нарисовать горизонталь, которая тянется через всю картинку. Или любую другую линию. На тайлах никто не рисует.
Мне и представлять не надо, имею большой опыт подобных действий.
Аннотации нужно в векторном виде хранить и рисовать оверлеем.
22 фев 21, 21:29    [22284923]     Ответить | Цитировать Сообщить модератору
 Re: Картинки больше 2ГБ  [new]
Flying-home
Member

Откуда: kart.vrostove.net
Сообщений: 14998
Соколинский Борис
Flying-home
Ну представь, тебе надо нарисовать горизонталь, которая тянется через всю картинку. Или любую другую линию. На тайлах никто не рисует.
Мне и представлять не надо, имею большой опыт подобных действий.
Аннотации нужно в векторном виде хранить и рисовать оверлеем.

В общем и целом да. Но иногда надо рисовать. Например, когда конечное приложение не умеет вектор. Или как в моем случае, нет приложений, которые рисовали бы вектор так, как мне надо.
22 фев 21, 21:33    [22284924]     Ответить | Цитировать Сообщить модератору
 Re: Картинки больше 2ГБ  [new]
Соколинский Борис
Member

Откуда: Москва
Сообщений: 14191
Flying-home
Или как в моем случае, нет приложений, которые рисовали бы вектор так, как мне надо.
Ну так напиши сам. Или программиста найди.
22 фев 21, 21:44    [22284928]     Ответить | Цитировать Сообщить модератору
 Re: Картинки больше 2ГБ  [new]
Flying-home
Member

Откуда: kart.vrostove.net
Сообщений: 14998
Flying-home
miksoft
пропущено...
Есть идея скормить этот тиф какому-нибудь опенсорсовому просмотрщику. Если он с ней справится, то можно будет посмотреть в код.

Можете дать образец такого тифа?

Классная идея! Ща выложу.

Не все так просто. Яндекс хочет, чтобы я какую-то прогу установил.
22 фев 21, 21:45    [22284930]     Ответить | Цитировать Сообщить модератору
 Re: Картинки больше 2ГБ  [new]
Flying-home
Member

Откуда: kart.vrostove.net
Сообщений: 14998
Flying-home
2. При попытке просто создать картинку и задать ей размеры 25000 на 25000 (заведомо больше 2ГБ) поймал исключение при вызове gdi32
CreateCompatibleBitmap(DC: HDC; Width, Height: Integer): HBitmap;

. А тут уже не совсем ясно. Это может быть связано с тем, что у меня в видюшке всего 2 гига памяти?

Соколинский Борис
Нет. DDB буфер в RAM сидит, и у него есть ограничение на размер. Маловероятно что мы доживем до времени когда буфер отрисовки будет рассчитан на мониторы с таким разрешением.


Вот тут пацаны в далеком 2001 году пришли к выводу, что работа CreateCompatibleBitmap таки зависит от видеокарты и настройки драйверов.
автор
Ничего странного. Вызов CreateCompatibleBitmap идет прямиком в дисплей-драйвер под именем DrvCreateDeviceBitmap. Это дает возможность драйверу создать битмап прямо в видеопамяти, что значительно ускоряет последующую работу с ним. Так что очень вероятно, что драйвер здесь причастен.


Это никуда не годится. Получается, надо искать способы рисовать на битмапе без GDI.
22 фев 21, 22:38    [22284949]     Ответить | Цитировать Сообщить модератору
 Re: Картинки больше 2ГБ  [new]
Flying-home
Member

Откуда: kart.vrostove.net
Сообщений: 14998
Соколинский Борис
Flying-home
Или как в моем случае, нет приложений, которые рисовали бы вектор так, как мне надо.
Ну так напиши сам. Или программиста найди.

Ах, если бы делать то что надо было бы так же просто, как знать, что надо делать! (С)
"Написать самому" в данном случае будет сложнее, чем написать свою ГИС с нуля. У меня сейчас продукт получается в результате последовательных действий в четырех разных программах. Работа третьей меня не устраивает. Надо или ждать, пока ее разработчики почешутся, или писать то, о чем я говорю. Именно рисовать на больших растрах.
22 фев 21, 22:48    [22284952]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
Все форумы / Delphi Ответить