Compact Framework - любая реализация Image.FromStream (Stream, Boolean, Boolean)?

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

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

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

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

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
4
0
2 966
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Если размеры JPEG велики (например, 1200 x 1600 или что-то в этом роде), то одна из проблем скорости, с которыми вы сталкиваетесь на вашем устройстве с конструктором Bitmap, - это размер 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, потому что он может сначала пропустить этап создания полноразмерного растрового изображения.

Спасибо, но размер изображения небольшой (320x240), но производительность при преобразовании все еще очень низкая (пропорционально).

castle1971 09.12.2008 00:52
Ответ принят как подходящий

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

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

Я не фанат OpenNETCF, но думаю, что попробую. Спасибо, Мэтт.

castle1971 02.09.2009 17:55

Что ж, классы, которые вам могут быть интересны, представляют собой обертки вокруг некоторых com-объектов, так что вы можете свернуть свои собственные, если хотите.

Matt 03.09.2009 04:07

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