CameraUI

1 view
Skip to first unread message

Hugo Ferreira

unread,
Mar 20, 2017, 7:37:26 AM3/20/17
to ri...@googlegroups.com
Bom dia,

Já aqui alguém usou a CameraUI existente na framework Flex para mobile ?
Não tiveram problemas com a orientação da imagens em modelos diferentes de devices ?


Cumprimentos,
Hugo.

Rui Cruz

unread,
Mar 20, 2017, 10:35:01 AM3/20/17
to ri...@googlegroups.com
Viva,

Penso que tens de ler a orientação no exif da foto.. em breve irei mexer com isso intensamente, mas para já só tenho de lidar com esse problema em desktop.


Cumprimentos

--
Recebeu esta mensagem porque subscreveu ao grupo "Mailing List da Comunidade Portuguesa de Rich Internet Applications - www.riapt.org" do Grupos do Google.
Para anular a subscrição deste grupo e parar de receber emails do mesmo, envie um email para riapt+unsubscribe@googlegroups.com.
Para publicar uma mensagem neste grupo, envie um email para ri...@googlegroups.com.
Visite este grupo em https://groups.google.com/group/riapt.
Para mais opções, visite https://groups.google.com/d/optout.

Hugo Ferreira

unread,
Mar 20, 2017, 11:12:36 AM3/20/17
to ri...@googlegroups.com
Viva,

É isso mesmo !
Desconhecia o conceito "EXIF" e foi  primeira vez que utilizei a classe CameraUI e tive de lidar com este tipo de problemas.
Pelo que estive a ler, isto é mesmo assim e não é um bug do AIR ou do Flex.
Aguns modelos como o Samsung Galaxy S6 devolvem a foto com um ângulo diferente e outros não.
Eu até já tinha o código feito para rodar (corrigir a rotação) da foto porque pensava que só acontecia em iOS (acontece no meu iPad 3 mas não no meu Huawei P9) mas ontem descobri que depende do modelo do device (também acontece por exemplo no S6 e iPhone 7 Plus mas não no iPad Pro), independentemente do OS e do runtime/SDK.

Com essa "keyword", já consegui encontrar muita informação na net e irei hoje testar com esta informação: http://stackoverflow.com/questions/35657156/adobe-air-cameraui-photo-orientation/35664209
Se funcionar bem, basta usar o método de rotação que já tenho em função dos graus que precisa de compensar (caso a foto não seja devolvida com rotação).

Não percebo porque é que não existe um standard.
Mais uma coisa para gastar processamento.

Foste uma grade ajuda.

Obrigado,
Hugo.







Hugo Ferreira

unread,
Mar 23, 2017, 5:53:20 AM3/23/17
to ri...@googlegroups.com
Viva,

Cheguei a tentar implemntar isso mas infelizmente que a implementação EXIF que encontrei não funciona.
Se depois chegares a alguma conclusão, por favor diz.

Obrigado,
Hugo.

Hugo Ferreira

unread,
Mar 29, 2017, 7:22:10 AM3/29/17
to ri...@googlegroups.com
Viva,

Desde que falei no assunto que não mexi mais nesta área mas agora tive mesmo de resolver e ficou a funcionar.
Eu fazia algumas tarefas após tirar a foto com a câmara nativa:
1 - Carregar a foto com o Loader que devolve um Bitmap;
2 - Redimensionar para um tamanho máximo o BitmapData caso o valor de largura fosse superior a um pré-definido;
3 - Depois tentava descobrir a orientação da imagem através da técnica EXIF (obrigado pela dica) mas sem sucesso.

O problema estava que no tratamento da imagem, a informação original do JPEG perdia-se.

Primeiro é necessário executar a técnica EXIF sobre o bytearray original (sem qualquer processamento de imagem) e guardar essa informação numa variável e só depois seguir o passo 1 e depois o 2.
Depois verifico a orientação lida e se necessário, roda-se a imagem.

Uma melhoria será guardar a informação da orientação da imagem em cache e só fazer essa leitura na primeira vez, pois ler os dados de um JPEG enorme, requer bastante processamento, com a qualidade das câmaras de hoje em dia.

João Fernandes

unread,
Mar 30, 2017, 12:56:15 PM3/30/17
to ri...@googlegroups.com
Criaste a tua própria biblioteca para ler o exif ou usas uma existente? Existem algumas que só lêem o início do ficheiro pois toda a metadata encontra se ai (quer EXIF quer IPTC), evitando ler o ficheiro todo para memória.

Hugo Ferreira

unread,
Mar 30, 2017, 1:00:29 PM3/30/17
to ri...@googlegroups.com
Criei a minha exatamente pelos problemas que mencionaste.
Já foi testado em vários androids, iphones e ipad e mantém-se estável e rapido a processar.

João Fernandes

unread,
Mar 30, 2017, 1:07:47 PM3/30/17
to ri...@googlegroups.com
Mas se estás a ler o bytearray original já estás a carregar tudo para memória, o ideal é ter o apontador para o ficheiro é ler do disco progressivamente o mesmo até terminar a metadata. Se o fazes a partir do bytearray, já leste tudo para memória.

On Mar 30, 2017 6:00 PM, "Hugo Ferreira" <hferre...@gmail.com> wrote:
Criei a minha exatamente pelos problemas que mencionaste.
Já foi testado em vários androids, iphones e ipad e mantém-se estável e rapido a processar.

Hugo Ferreira

unread,
Mar 30, 2017, 1:09:39 PM3/30/17
to ri...@googlegroups.com
João,

Nunca chega a existir ficheiro em disco.


Rui Cruz

unread,
Mar 31, 2017, 1:42:20 PM3/31/17
to ri...@googlegroups.com
Eu usei FileStream em vez de FileReference.. no caso do mobile penso que é um MediaPromise. Infelizmente também existe metadata em xmp, a adobe tem uma lib para se usar para isso mas ainda não experimentei. 

No caso do desktop até estou a considerar usar o flascc para converter alguma lib mais robusta..

Hugo Ferreira

unread,
Mar 31, 2017, 4:08:56 PM3/31/17
to ri...@googlegroups.com
Sim, é MediaPromise.
Reply all
Reply to author
Forward
0 new messages