Задача следующая: Создать файл с большим разрешением(примерно 32000х20000, иначе мелкие детали рисунка не видны) на С#
Делаю след.образом:
Bitmap b = new Bitmap(width, height, System.Drawing.Imaging.PixelFormat.Format16bppRgb555), тем самым задаю формат пикселей. При перемножении width*height*16 бит -> огромный файл и привет... не хватает памяти. Этим способом удалось создать файл вдвое меньшего размера чем требуется.
Мне достаточно было бы 8 бит на пиксел, но в подмножетстве PixelFormat те форматы, что по 8 бит индексированные и GDI+ c ними не работает!!!
Что делать??? Какие есть еще способы создания файла огромных размеров на С#?
Если кто подскажет, большое ему спасибо!
Здравствуйте, Аноним, Вы писали:
А>Задача следующая: Создать файл с большим разрешением(примерно 32000х20000, иначе мелкие детали рисунка не видны) на С#
А>Делаю след.образом: А>Bitmap b = new Bitmap(width, height, System.Drawing.Imaging.PixelFormat.Format16bppRgb555), тем самым задаю формат пикселей. При перемножении width*height*16 бит -> огромный файл и привет... не хватает памяти. Этим способом удалось создать файл вдвое меньшего размера чем требуется. А>Мне достаточно было бы 8 бит на пиксел, но в подмножетстве PixelFormat те форматы, что по 8 бит индексированные и GDI+ c ними не работает!!!
А>Что делать??? Какие есть еще способы создания файла огромных размеров на С#? А>Если кто подскажет, большое ему спасибо!
Единственное что приходит в голову — разбить на куски и подгружать по мере необходимости...
Здравствуйте, nikov, Вы писали:
N>Здравствуйте, Аноним, Вы писали:
А>>Что делать??? Какие есть еще способы создания файла огромных размеров на С#?
N>Разбейте на прямоугольные области и создавайте по кусочкам.
Thanks! Но к сожалению это не метод в моем случае... Отрисовываю это все на панели (panel), тут размер не проблема... Но вот сохранить без bitmap не знаю как (((
Другие идеи???
Здравствуйте, Kingston, Вы писали:
K>Здравствуйте, nikov, Вы писали:
N>>Здравствуйте, Аноним, Вы писали:
А>>>Что делать??? Какие есть еще способы создания файла огромных размеров на С#?
N>>Разбейте на прямоугольные области и создавайте по кусочкам.
K>Thanks! Но к сожалению это не метод в моем случае... Отрисовываю это все на панели (panel), тут размер не проблема... Но вот сохранить без bitmap не знаю как ((( K>Другие идеи???
В бмп формат сохранять очень легко — прочитай про него, там все ясно. Если тебе нужен jpeg, тогда не знаю.
Здравствуйте, Аноним, Вы писали:
А>Что делать??? Какие есть еще способы создания файла огромных размеров на С#? А>Если кто подскажет, большое ему спасибо!
Здравствуйте, <Аноним>, Вы писали:
А>Задача следующая: Создать файл с большим разрешением(примерно 32000х20000, иначе мелкие детали рисунка не видны) на С# здесь
GDI+ — это ширпотреб для общественных нужд. В данном случае нужна специализированная библиотека.
Здравствуйте, GlebZ, Вы писали:
HD>>Перейти на 64 битную виндовс. GZ>Здоровски. 64-битная виндовс дополнительные димы эмулирует?
64-битная виндовс не имеет 2Gb ограничения на размер выделенной памяти для приложения.
Что позволяет работать с изображениями такого размера. По крайней мере GDI+ нормально "переваривает" такие картинки.
Здравствуйте, HotDog, Вы писали:
HD>64-битная виндовс не имеет 2Gb ограничения на размер выделенной памяти для приложения.
32000*20000*2=1,280,000,000.
HD>64-битная виндовс не имеет 2Gb ограничения на размер выделенной памяти для приложения. HD>Что позволяет работать с изображениями такого размера. По крайней мере GDI+ нормально "переваривает" такие картинки.
Да... хорошо, что создатели Google Earth не пошли по такому пути
Здравствуйте, GlebZ, Вы писали:
HD>>64-битная виндовс не имеет 2Gb ограничения на размер выделенной памяти для приложения. GZ>32000*20000*2=1,280,000,000.
Ну ты ради интереса, возьми и открой jpeg размером 1000x1000.
Я тебя уверяю, что твое приложение откушает больше чем 1000х1000х3 байт
Здравствуйте, HotDog, Вы писали:
HD>Ну ты ради интереса, возьми и открой jpeg размером 1000x1000. HD>Я тебя уверяю, что твое приложение откушает больше чем 1000х1000х3 байт
Веришь нет, но Windows picture при открытии примерно плюсует именно эту цифру. Только 1000x1000x4 байт. Он 32 битный.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[7]: Bitmap огромных размеров
От:
Аноним
Дата:
25.07.06 11:55
Оценка:
>>Да... хорошо, что создатели Google Earth не пошли по такому пути
Да НИКТО не идет по ТАКОМУ пути. Все, всегда и везде режут на куски и подгружают по мере необходимости. Всё равно столько пикселей на экране отобразить невозможно физически. Таких экранов еще не придумали.
How can men die better than facing fearful odds,
For the ashes of their fathers and the temples of their gods?
BTA>Да НИКТО не идет по ТАКОМУ пути. Все, всегда и везде режут на куски и подгружают по мере необходимости. Всё равно столько пикселей на экране отобразить невозможно физически. Таких экранов еще не придумали.
Ну раз уж такая пьянка пошла и мы свалились в полный офтопик...
Представь себе, что тебе надо напечатать плакат A0 с разрешением в 300 DPI (если покажется мало, то возьми 600 DPI для оффсетной печати). И нужно напечатать не текст или векторную графику, а обычный растер (фото), то примерно в таких диапазонах и прыгают размеры.
PS. Еще раз, для тех кто любит поспорить... Я НЕ АВТОР вопроса. Я просто обьяснил, каким образом в GDI+ можно работать с изображениями большого размера