Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Картинки больше 2ГБ / 25 сообщений из 94, страница 1 из 4
22.02.2021, 20:09
    #40047973
Flying-home
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Картинки больше 2ГБ
Наконец дошли руки до моей поделки. Сразу столкнулся с двумя проблемами.

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

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

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

Delphi XE3, Windows 7 SP1 x64.
...
Рейтинг: 0 / 0
22.02.2021, 20:13
    #40047974
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Картинки больше 2ГБ
Flying-home,

приложение 32бит? ну не может оно аллокировать больше 2 гиг. Что за программисты пошли, вообще ничего не знают.
...
Рейтинг: 0 / 0
22.02.2021, 20:21
    #40047977
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Картинки больше 2ГБ
Flying-homeА тут уже не совсем ясно.

Что тебе неясно? Лапки не только у TStream. Забей на битмап, работай просто с массивом
пикселей.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
22.02.2021, 20:26
    #40047978
Flying-home
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Картинки больше 2ГБ
kdv
Flying-home,

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

Да не, специально скачал свежую (относительно) Дельфу, выставил в свойствах проекта таргет платформ x64.
...
Рейтинг: 0 / 0
22.02.2021, 20:28
    #40047981
Соколинский Борис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Картинки больше 2ГБ
Flying-home
А тут уже не совсем ясно. Это может быть связано с тем, что у меня в видюшке всего 2 гига памяти?
Нет. DDB буфер в RAM сидит, и у него есть ограничение на размер. Маловероятно что мы доживем до времени когда буфер отрисовки будет рассчитан на мониторы с таким разрешением.

Flying-home

Прошу совета, в каком направлении двигаться.
В том, куда ты не хочешь.
...
Рейтинг: 0 / 0
22.02.2021, 20:29
    #40047982
Flying-home
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Картинки больше 2ГБ
Dimitry Sibiryakov
Flying-homeА тут уже не совсем ясно.

Что тебе неясно? Лапки не только у TStream. Забей на битмап, работай просто с массивом
пикселей.
Думаю, так и придется. А рисовать как? Самому вот это вот все реализовывать? Я хочу и полупрозрачность, и другие вкусняшки GDI.
...
Рейтинг: 0 / 0
22.02.2021, 20:30
    #40047983
Flying-home
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Картинки больше 2ГБ
Соколинский Борис
Flying-home
А тут уже не совсем ясно. Это может быть связано с тем, что у меня в видюшке всего 2 гига памяти?
Нет. DDB буфер в RAM сидит, и у него есть ограничение на размер. Маловероятно что мы доживем до времени когда буфер отрисовки будет рассчитан на мониторы с таким разрешением.

Flying-home

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

Бить на кусочки? Грустно.
...
Рейтинг: 0 / 0
22.02.2021, 20:33
    #40047984
Соколинский Борис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Картинки больше 2ГБ
Flying-home,
Ты хочешь сказать, что исходная картинка не из кусочков? Можно я не поверю?
...
Рейтинг: 0 / 0
22.02.2021, 20:40
    #40047986
Flying-home
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Картинки больше 2ГБ
Соколинский Борис
Flying-home,
Ты хочешь сказать, что исходная картинка не из кусочков? Можно я не поверю?

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

Кстати, есть такие картинки, которые точно не из кусочков.
https://api.discover.digitalglobe.com/show?id=103001008D9D1700
Это превьюшка снимка разрешением 0.5 метра на пиксель. Там точно больше 2 гигов.
...
Рейтинг: 0 / 0
22.02.2021, 20:46
    #40047988
Соколинский Борис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Картинки больше 2ГБ
Flying-home,
Нет таких матриц в природе, это все панорамные съемки. И хранить их в непорезанном виде - совсем не умная идея.
...
Рейтинг: 0 / 0
22.02.2021, 21:05
    #40047994
Flying-home
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Картинки больше 2ГБ
Соколинский Борис
Flying-home,
Нет таких матриц в природе, это все панорамные съемки. И хранить их в непорезанном виде - совсем не умная идея.

Они хранятся продаются в непорезанном виде. И ортокоррекцию им делают тоже в непорезанном виде. Так удобнее.
Кстати, делаются они тоже целиком, за один проход. Но там по принципу сканера фотка делается, ширина снимка ограничена размером матрицы, а высота - нет.
...
Рейтинг: 0 / 0
22.02.2021, 21:10
    #40047996
Flying-home
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Картинки больше 2ГБ
Ладно, вернемся к нашим баранам. Если я буду резать картинки на кусочки по 2 гига, смогу ли я работать с каждым их этих кусочков в отдельном потоке?

И это. Тот же Ирфан Вью легко и быстро открывает и показывает этот тиф. Значит, он что-то знает, чего не знаем мы?
...
Рейтинг: 0 / 0
22.02.2021, 21:15
    #40047998
Соколинский Борис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Картинки больше 2ГБ
Flying-home
Они хранятся продаются в непорезанном виде. И ортокоррекцию им делают тоже в непорезанном виде. Так удобнее.
Нифига это не удобнее. Удобно тайлы + пирамида, очень быстро получаешь и целиком в малом масштабе и нужный фрагмент в натуральном. Это пограничные случаи, все остальные в них вписываются.
Рискну предположить, что в твоем tiff-е оно и есть, только зачем-то запихнуто в один файл.

Flying-home
Но там по принципу сканера фотка делается, ширина снимка ограничена размером матрицы, а высота - нет.
Уверен?
Сомнительно что так со спутника можно снять, временной параллакс и все такое.
...
Рейтинг: 0 / 0
22.02.2021, 21:16
    #40048000
Соколинский Борис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Картинки больше 2ГБ
Flying-home
И это. Тот же Ирфан Вью легко и быстро открывает и показывает этот тиф. Значит, он что-то знает, чего не знаем мы?
Посмотри инфу о файле. Наверняка многостраничный и первой как раз верхушка пирамиды.
...
Рейтинг: 0 / 0
22.02.2021, 21:21
    #40048003
Flying-home
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Картинки больше 2ГБ
Flying-home
Если я буду резать картинки на кусочки по 2 гига, смогу ли я работать с каждым их этих кусочков в отдельном потоке?

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

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

Правда, он на плюсах написан.
...
Рейтинг: 0 / 0
22.02.2021, 21:22
    #40048004
Соколинский Борис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Картинки больше 2ГБ
Flying-home
Я имею в виду, нет ли у GDI каких-то ограничений на вызов функций не из основного потока приложения?
Нет.
...
Рейтинг: 0 / 0
22.02.2021, 21:23
    #40048005
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Картинки больше 2ГБ
Flying-home
Тот же Ирфан Вью легко и быстро открывает и показывает этот тиф. Значит, он что-то знает, чего не знаем мы?
Есть идея скормить этот тиф какому-нибудь опенсорсовому просмотрщику. Если он с ней справится, то можно будет посмотреть в код.

Можете дать образец такого тифа?
...
Рейтинг: 0 / 0
22.02.2021, 21:25
    #40048007
Flying-home
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Картинки больше 2ГБ
Соколинский Борис
Flying-home
Они хранятся продаются в непорезанном виде. И ортокоррекцию им делают тоже в непорезанном виде. Так удобнее.
Нифига это не удобнее. Удобно тайлы + пирамида, очень быстро получаешь и целиком в малом масштабе и нужный фрагмент в натуральном. Это пограничные случаи, все остальные в них вписываются.
Рискну предположить, что в твоем tiff-е оно и есть, только зачем-то запихнуто в один файл.

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


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

2. Да, уверен. Просто по-другому никак.
...
Рейтинг: 0 / 0
22.02.2021, 21:26
    #40048008
Flying-home
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Картинки больше 2ГБ
miksoft
Flying-home
Тот же Ирфан Вью легко и быстро открывает и показывает этот тиф. Значит, он что-то знает, чего не знаем мы?
Есть идея скормить этот тиф какому-нибудь опенсорсовому просмотрщику. Если он с ней справится, то можно будет посмотреть в код.

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

Классная идея! Ща выложу.
...
Рейтинг: 0 / 0
22.02.2021, 21:29
    #40048010
Соколинский Борис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Картинки больше 2ГБ
Flying-home
Ну представь, тебе надо нарисовать горизонталь, которая тянется через всю картинку. Или любую другую линию. На тайлах никто не рисует.
Мне и представлять не надо, имею большой опыт подобных действий.
Аннотации нужно в векторном виде хранить и рисовать оверлеем.
...
Рейтинг: 0 / 0
22.02.2021, 21:33
    #40048011
Flying-home
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Картинки больше 2ГБ
Соколинский Борис
Flying-home
Ну представь, тебе надо нарисовать горизонталь, которая тянется через всю картинку. Или любую другую линию. На тайлах никто не рисует.
Мне и представлять не надо, имею большой опыт подобных действий.
Аннотации нужно в векторном виде хранить и рисовать оверлеем.

В общем и целом да. Но иногда надо рисовать. Например, когда конечное приложение не умеет вектор. Или как в моем случае, нет приложений, которые рисовали бы вектор так, как мне надо.
...
Рейтинг: 0 / 0
22.02.2021, 21:44
    #40048014
Соколинский Борис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Картинки больше 2ГБ
Flying-home
Или как в моем случае, нет приложений, которые рисовали бы вектор так, как мне надо.
Ну так напиши сам. Или программиста найди.
...
Рейтинг: 0 / 0
22.02.2021, 21:45
    #40048015
Flying-home
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Картинки больше 2ГБ
Flying-home
miksoft
пропущено...
Есть идея скормить этот тиф какому-нибудь опенсорсовому просмотрщику. Если он с ней справится, то можно будет посмотреть в код.

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

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

Не все так просто. Яндекс хочет, чтобы я какую-то прогу установил.
...
Рейтинг: 0 / 0
22.02.2021, 22:38
    #40048022
Flying-home
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Картинки больше 2ГБ
Flying-home
2. При попытке просто создать картинку и задать ей размеры 25000 на 25000 (заведомо больше 2ГБ) поймал исключение при вызове gdi32
Код: plaintext
1.
CreateCompatibleBitmap(DC: HDC; Width, Height: Integer): HBitmap;


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

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


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

Это никуда не годится. Получается, надо искать способы рисовать на битмапе без GDI.
...
Рейтинг: 0 / 0
22.02.2021, 22:48
    #40048023
Flying-home
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Картинки больше 2ГБ
Соколинский Борис
Flying-home
Или как в моем случае, нет приложений, которые рисовали бы вектор так, как мне надо.
Ну так напиши сам. Или программиста найди.

Ах, если бы делать то что надо было бы так же просто, как знать, что надо делать! (С)
"Написать самому" в данном случае будет сложнее, чем написать свою ГИС с нуля. У меня сейчас продукт получается в результате последовательных действий в четырех разных программах. Работа третьей меня не устраивает. Надо или ждать, пока ее разработчики почешутся, или писать то, о чем я говорю. Именно рисовать на больших растрах.
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Картинки больше 2ГБ / 25 сообщений из 94, страница 1 из 4
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]