Compact Framework - qualquer implementação do Image.FromStream (Stream, Boolean, Boolean)?

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

Pergunta

Em um aplicativo .NET CF eu escrevi, uma das características é a quadros adquirir de câmeras remotas. Frames são adquiridos como imagens JPEG individuais e exibido na tela quando disponível.

Foi uma solução boa o suficiente, mas eu não gosto do fato de que o tempo necessário para converter o fluxo em um objeto Image, com o construtor Bitmap(), é muito muito muito maior do que a tempo necessário para baixar o fluxo.

Quando eu surfei alguns blogs de pesquisa sobre o assunto, descobri que alguns desenvolvedores estavam usando o método Image.FromStream() que tem uma bandeira validateImageData que parece controlar algum código de validação. Quando validateImageData é falsa, a conversão fica dramaticamente mais rápido.

bom, eu pensei .... mas não o Compact Framework não implementar este método!

Alguém sabe como contornar isso, ou pelo menos como converter um fluxo em um Image sem atrasos desnecessários?

Foi útil?

Solução

Não sei se isso vai ajudar, mas OpenNETCF.Drawing.Imaging tem classes para ler imagens a partir de fluxos, mas eles são IImage envolto objetos COM. Você pode então usar IImage.Draw para desenhá-lo para o seu bitmap. Ele também tem um método GetThumbnail que eu uso para obter uma imagem em escala de grandes jpegs no dispositivo.

Aqui é um post no blog sobre isso de Alex Feinman.

Outras dicas

Se as dimensões do JPEG são grandes (como 1200 x 1600 ou algo assim), então um dos problemas de velocidade que você está tendo no seu dispositivo com o construtor Bitmap é o tamanho do mapa de bits é tem que criar na memória ( o bitmap seria 1200 x 1600 também, mesmo que seja exibido em uma tela de 240 X 320). Se você pode recuperar um JPEG já de tamanho de 320 x 240 em vez de uma de tamanho normal, o tempo de criação bitmap deve ser muito menos.

Não conseguimos encontrar alternativas ao método FromStream faltando diferente do construtor Bitmap. Se você estiver familiarizado com o formato JPEG, eu não acho que seria muito difícil de escrever seu próprio conversor JPEG-a-BMP, mas eu acho que não seria mais rápido do que Bitmap ().

Edit: Desculpe, eu quis dizer o seu conversor própria laminados não seria mais rápido na conversão de um JPEG 240 X 320 em um bitmap de 240 X 320. Eu acho que poderia ser feito muito mais rápido na conversão de um JPEG muito maior em um bitmap de 240 X 320, pois poderia pular a etapa de criação do bitmap de tamanho completo pela primeira vez.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top