Compact Framework - любая реализация Образа.FromStream (Поток, Логическое значение, Boolean)?

StackOverflow https://stackoverflow.com/questions/285440

Вопрос

В приложении .NET CF, которое я написал, одной из функций является получение кадров с удаленных камер.Кадры получаются в виде отдельных изображений в формате jpeg и отображаются на экране, когда они доступны.

Это было достаточно хорошее решение, но мне не нравится тот факт, что время, необходимое для преобразования потока в Image объект, с Bitmap() конструктор, является намного, намного, намного больше чем время, необходимое для загрузки потока.

Когда я просмотрел несколько блогов в поисках информации об этой проблеме, я обнаружил, что некоторые разработчики использовали Image.FromStream() метод, который имеет validateImageData флаг, который, по-видимому, управляет некоторым кодом проверки.Когда validateImageData если значение равно false, преобразование происходит значительно быстрее.

" Хорошо", - подумал я ....но Compact Framework не реализует этот метод !

Кто-нибудь знает, как обойти это, или, по крайней мере, как преобразовать поток в Image без лишних задержек ?

Это было полезно?

Решение

Не уверен, поможет ли это, но OpenNETCF открыт.Рисование.В Imaging есть классы для чтения изображений из потоков, но они представляют собой com-объекты, обернутые в IImage.Затем вы можете использовать IImage.Draw, чтобы нарисовать его на своем растровом изображении.В нем также есть метод GetThumbnail, который я использую для получения масштабированного изображения больших файлов jpeg на устройстве.

Здесь об этом есть запись в блоге Алекса Фейнмана.

Другие советы

Если размеры JPEG большие (например, 1200 x 1600 или что-то в этом роде), то одна из проблем со скоростью работы вашего устройства с конструктором Bitmap заключается в размере растрового изображения, которое необходимо создать в памяти (растровое изображение также будет 1200 x 1600, даже если оно затем отображается на экране 240 X 320).Если вы можете получить формат JPEG размером 320 X 240 вместо полноразмерного, время создания растрового изображения должно быть намного меньше.

Я не смог найти никаких альтернатив отсутствующему методу FromStream, кроме конструктора Bitmap.Если вы знакомы с форматом JPEG, я не думаю, что было бы слишком сложно написать свой собственный конвертер JPEG в BMP, но я бы предположил, что это будет не быстрее, чем Bitmap ().

Редактировать:извините, я имел в виду, что ваш собственный конвертер не будет быстрее преобразовывать формат 240 X 320 JPEG в растровое изображение 240 X 320.Я думаю, что это можно было бы сделать намного быстрее при преобразовании гораздо большего формата JPEG в растровое изображение размером 240 X 320, потому что при этом можно было бы пропустить этап создания полноразмерного растрового изображения.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top