2010-05-04 4 views
1

Мне нужно создать большие изображения (изображение A4 при 200 DPI, формат PNG будет в порядке) в моем приложении с компактными рамами. Это невозможно сделать стандартным способом из-за ограничений памяти (такое большое изображение будет бросать OOMException).Как создать большое изображение в компактном каркасе

Есть ли какая-либо библиотека, которая предлагает создание образа потока с файловыми резервными копиями?

Или я мог бы создать много меньших полос изображений (каждая полоса, представляющая ряд большого изображения), используя стандартный подход Bitmap, но после этого мне нужно объединить их вместе - есть ли способ объединить много меньших изображений в один большой, без необходимости экземпляра большого экземпляра Bitmap (что снова вызовет OOM)?

ответ

1

Я просто сделал быструю базовую реализацию PNG класса кодирования потока - он поддерживает только 8bpp и оттенки серый на данный момент, хотя, но это достаточно для моего сценария , Достаточно просто расширить класс для поддержки RGB и большего количества глубин цвета.

http://gist.github.com/393409

1

Это интересно ... Я сделал несколько поисковых запросов для вас, и единственная полезная вещь, которую я нашел, это OpenNETCF Smart Device Framework. Ссылка на библиотеку классов - here Предложите вам взглянуть на ImagingFactoryClass. Может быть полезен метод CreateImageEncoderToStream.

Слияние подхода было бы здорово, если бы у вас была библиотека, которая сделает это за вас. Я взглянул на спецификации PNG и не очень многообещал.

Удачи, и я надеюсь, что это поможет.

+0

Я уже использую OpenNetCF SDF, но упускать из виду метод CreateImageEncoderToStream. Посмотрите на него и сообщите о каком-либо прогрессе. – Buthrakaur

2

У меня была такая же потребность, и я заканчиваю писать свою собственную библиотеку. PNGJ Возможно, вы сочтете это полезным, это Java, но его легко переносить на C# (полностью независимый от других библиотек). Он пишет и читает изображения PNG (за исключением палитры), ориентированные на линию, довольно низкий уровень, оптимизированные для обработки огромных изображений. В загрузке есть несколько примеров.

Обновлен: Я сделал C# доступных здесь: PNGCS

+0

выглядит многообещающим - я попытаюсь переписать его на .Net, если я не найду никакого другого способа решения проблемы. благодаря – Buthrakaur

Смежные вопросы