SASGIS

Веб-картография и навигация


View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0000377SAS.Планета[All Projects] Багpublic20-01-2011 03:2310-10-2012 11:50
ReporterParasite 
Assigned Tozed 
PrioritynormalSeveritymajorReproducibilityalways
StatusclosedResolutionfixed 
PlatformWindowsOSXPOS VersionSP3
Product Version110216 
Target Version120808Fixed in Version120808 
Summary0000377: При попытке сведения в BMP не учитываются лимиты файла
DescriptionПри попытке сведения достаточно большой области в BMP - не учитываются лимиты файла (2Gb). Программа упорно пытается утоптать территорию в файл, коя территория не влезет в максимально возможный BMP даже теоретически. Ну и соответственно падает с еррором I\O 131.

Гораздо правильнее было бы предварительно обсчитывать получающийся размер финального BMP, и если результат получается больше 2Gb - то либо предупреждать пользователя (без старта процесса сведения, ибо толку все равно не будет - а будет еррор), либо автоматически разбивать эту область на несколько раздельных BMP и сводить по одному (благо что такая опция в программе есть, осталось только автоматически вставлять туда нужные для данной склейки значения и так и сводить), либо предлагать выбрать какой-либо другой формат файла (не BMP, а например RAW без лимитов по размерам).
Про RAW - тут: http://sasgis.org/mantis/view.php?id=295
Steps To ReproduceПопытаться склеить в БМП какую-нибудь карту из 30-50тыс тайлов (в один файл)... :)
Tagsbmp, ограничения, склейка
Attached Files

- Relationships
related to 0000169closedzed Out of memory при склейке большого файла 
related to 0001014closedzed Сохранение картинки в формате BMP до 4 гигабайт 
related to 0001213closedvdemidov Склеивание BMP больше 32767x32767 

-  Notes
(0001586)
gpsMax (manager)
07-04-2011 02:26
edited on: 07-04-2011 02:29

Бага схожа со 169 в том смысле, что хорошо бы перед началом склейки примерно посчитать результирующий объём, и при превышении лимита формата/памяти, не начиная склейку, сразу отказываться с выдачей сообщения пользователю.

(0001591)
Parasite (administrator)
07-04-2011 05:31

>Кстати, лимит в 2 гигабайта на файл присутствует только в FAT32, но не в NTFS.
А разве на NTFS живут какие-то другие BMP? :)

Бага (данная конкретная) связана не с размером файла на диске, а с переполнением значений в хидере BMP-файла (подробнее - тут: http://en.wikipedia.org/wiki/BMP_file_format)
В частности, под размер битмапа выделено 4 байта, то есть ВЕСЬ файл не может превышать 7F FF FF FF байт (2 147 483 647 #dec, где самый старший бит - знаковый в виндявом INTe. Впрочем, даже если бы его не было - лимит был бы уже в 4Гб, а это для битмапа без сжатия - тоже весьма немного).

В RAW, господа, в RAW... :)
(0001595)
gpsMax (manager)
07-04-2011 11:02
edited on: 07-04-2011 11:03

Про NTFS - я уже понял, что ошибся, и удалил это своё замечание, через минуту после написания :-)

(0004115)
zed (manager)
19-10-2011 18:36
edited on: 19-10-2011 18:42

Вот тут http://www.fileformat.info/format/bmp/egff.htm пишут:

typedef struct _WinBMPFileHeader
{
    WORD FileType; /* File type, always 4D42h ("BM") */
    DWORD FileSize; /* Size of the file in bytes */
    WORD Reserved1; /* Always 0 */
    WORD Reserved2; /* Always 0 */
    DWORD BitmapOffset; /* Starting position of image data in bytes */
} WINBMPFILEHEADER;

В этой структуре, под размер файла отведён тип DWORD (беззнаковое, целое). Т.е. лимит у BMP должен быть в 4Гб.

И ещё пишут, что Maximum Image Size: 32Kx32K and 2Gx2G pixels, т.е. либо миллиард пикселей, либо 4 Гб.

Так что, у кого железо позволяет, попробуйте завтра на ночной сборке создать BMP по-больше, и открыть его чем-нибудь 64-х битным.

(0004118)
Parasite (administrator)
20-10-2011 03:15

>Т.е. лимит у BMP должен быть в 4Гб.
Вроде vdemidov упоминал именно про 2Гб в винде. Надо посмотреть в хистори.
Вопрос не в размере битмапа как таковом - а в предварительном обсчете оного размера и автоматическом разбиении на части, если вылазим за лимиты. К коим лимитам хотелось бы еще приписать и собственно размер одного битмапа по пикселям, а не по байтам - FFFF/FFFF пикс, если селекшн на сведение больше этого размера и именно в бмп - таки придется разбивать в любом случае...

PS: что же касалось именно размера - на момент создания тикета программа НЕ СОЗДАВАЛА bmp выше 1.34Gb размером, я специально проверял пытаясь свести большую картинку. Если должно было быть выше 1.34Gb - то тот же еррор i/o 131. Текущие версии - не знаю, не тестил.

PPS: а может просто отказаться от bmp? Мороки с ним - много, а толку от него - вообще нет. Хай в ECW сводят, а оттуда если приспичит - можно конвертить в bmp сторонними, более продвинутыми средствами....? Лучше вместо него прикодить BigTiff\geoTiff.... :)
(0004121)
zed (manager)
20-10-2011 05:56

>Текущие версии - не знаю, не тестил
А ты потести. Там и проверка стоит и большие bmp нормально создаются.
(0004122)
bk99 (reporter)
20-10-2011 06:35

>Текущие версии - не знаю, не тестил
Народ ждёт стэйбл... Тогда и непоняток меньше будет.
(0004123)
zed (manager)
20-10-2011 06:36

Чтоб появился стэйбл, нужно оттестить и пофиксить баги у ночнушек.

- Users who viewed this issue
User List Anonymous (2565x)
Total Views 2565
Last View 25-04-2024 10:21

- Issue History
Date Modified Username Field Change
20-01-2011 03:23 Parasite New Issue
10-03-2011 21:09 vdemidov Status new => acknowledged
10-03-2011 21:10 vdemidov Product Version => 110216
10-03-2011 21:10 vdemidov Target Version => 26xxxx
11-03-2011 07:23 gpsMax Tag Attached: склейка
11-03-2011 07:23 gpsMax Tag Attached: bmp
07-04-2011 02:22 gpsMax Relationship added related to 0000169
07-04-2011 02:26 gpsMax Note Added: 0001586
07-04-2011 02:26 gpsMax Note Added: 0001587
07-04-2011 02:27 gpsMax Note Deleted: 0001587
07-04-2011 02:28 gpsMax Note Edited: 0001586 View Revisions
07-04-2011 02:29 gpsMax Note Edited: 0001586 View Revisions
07-04-2011 05:31 Parasite Note Added: 0001591
07-04-2011 11:02 gpsMax Note Added: 0001595
07-04-2011 11:03 gpsMax Note Edited: 0001595 View Revisions
09-04-2011 14:33 gpsMax Tag Attached: ограничения
11-04-2011 07:10 vdemidov Status acknowledged => confirmed
19-10-2011 18:36 zed Note Added: 0004115
19-10-2011 18:42 zed Note Edited: 0004115 View Revisions
20-10-2011 03:15 Parasite Note Added: 0004118
20-10-2011 03:57 gpsMax Relationship added related to 0001014
20-10-2011 05:56 zed Note Added: 0004121
20-10-2011 06:35 bk99 Note Added: 0004122
20-10-2011 06:36 zed Note Added: 0004123
18-12-2011 16:44 zed Assigned To => zed
18-12-2011 16:44 zed Status confirmed => feedback
03-01-2012 10:44 zed Status feedback => resolved
03-01-2012 10:44 zed Fixed in Version => 24xxxx
03-01-2012 10:44 zed Resolution open => fixed
23-01-2012 08:22 vdemidov Fixed in Version 24xxxx => 120808
23-01-2012 08:22 vdemidov Target Version 26xxxx => 120808
22-03-2012 08:23 gpsMax Relationship added related to 0001213
10-10-2012 11:50 Tolik Status resolved => closed



Copyright © 2007 - 2024 SAS.Planet Team