SASGIS - SAS.Планета |
View Issue Details |
|
ID | Project | Category | View Status | Date Submitted | Last Update |
0000377 | SAS.Планета | [All Projects] Баг | public | 20-01-2011 03:23 | 10-10-2012 11:50 |
|
Reporter | Parasite | |
Assigned To | zed | |
Priority | normal | Severity | major | Reproducibility | always |
Status | closed | Resolution | fixed | |
Platform | Windows | OS | XP | OS Version | SP3 |
Product Version | 110216 | |
Target Version | 120808 | Fixed in Version | 120808 | |
|
Summary | 0000377: При попытке сведения в 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тыс тайлов (в один файл)... :) |
Additional Information | |
Tags | bmp, ограничения, склейка |
Relationships | related to | 0000169 | closed | zed | Out of memory при склейке большого файла | related to | 0001014 | closed | zed | Сохранение картинки в формате BMP до 4 гигабайт | related to | 0001213 | closed | vdemidov | Склеивание BMP больше 32767x32767 |
|
Attached Files | |
|
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 | bug_revision_view_page.php?bugnote_id=1586#r601 |
07-04-2011 02:29 | gpsMax | Note Edited: 0001586 | bug_revision_view_page.php?bugnote_id=1586#r602 |
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 | bug_revision_view_page.php?bugnote_id=1595#r615 |
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 | bug_revision_view_page.php?bugnote_id=4115#r2087 |
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 |
Notes |
|
(0001586)
|
gpsMax
|
07-04-2011 02:26
(edited on: 07-04-2011 02:29) |
|
Бага схожа со 169 в том смысле, что хорошо бы перед началом склейки примерно посчитать результирующий объём, и при превышении лимита формата/памяти, не начиная склейку, сразу отказываться с выдачей сообщения пользователю.
|
|
|
|
>Кстати, лимит в 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
|
07-04-2011 11:02
(edited on: 07-04-2011 11:03) |
|
Про NTFS - я уже понял, что ошибся, и удалил это своё замечание, через минуту после написания :-)
|
|
|
(0004115)
|
zed
|
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-х битным.
|
|
|
|
>Т.е. лимит у BMP должен быть в 4Гб.
Вроде vdemidov упоминал именно про 2Гб в винде. Надо посмотреть в хистори.
Вопрос не в размере битмапа как таковом - а в предварительном обсчете оного размера и автоматическом разбиении на части, если вылазим за лимиты. К коим лимитам хотелось бы еще приписать и собственно размер одного битмапа по пикселям, а не по байтам - FFFF/FFFF пикс, если селекшн на сведение больше этого размера и именно в бмп - таки придется разбивать в любом случае...
PS: что же касалось именно размера - на момент создания тикета программа НЕ СОЗДАВАЛА bmp выше 1.34Gb размером, я специально проверял пытаясь свести большую картинку. Если должно было быть выше 1.34Gb - то тот же еррор i/o 131. Текущие версии - не знаю, не тестил.
PPS: а может просто отказаться от bmp? Мороки с ним - много, а толку от него - вообще нет. Хай в ECW сводят, а оттуда если приспичит - можно конвертить в bmp сторонними, более продвинутыми средствами....? Лучше вместо него прикодить BigTiff\geoTiff.... :) |
|
|
(0004121)
|
zed
|
20-10-2011 05:56
|
|
>Текущие версии - не знаю, не тестил
А ты потести. Там и проверка стоит и большие bmp нормально создаются. |
|
|
(0004122)
|
bk99
|
20-10-2011 06:35
|
|
>Текущие версии - не знаю, не тестил
Народ ждёт стэйбл... Тогда и непоняток меньше будет. |
|
|
(0004123)
|
zed
|
20-10-2011 06:36
|
|
Чтоб появился стэйбл, нужно оттестить и пофиксить баги у ночнушек. |
|