[RESOLVIDO] CAPTURAR COORDENADAS DE UMA FOTO EM UPLOAD

Boa Tarde a Todos;

Eu estou com um problema, alguem pode me dizer como faço para pegar as informações de uma imagem no upload exemplo:

A minha aplicação roda em um Tablet com Android 4.2.2 no botão de upload da imagem eu aciono a camera do tablet, tiro a Foto e faço a upload dessa imagem até ai tudo bem... acontece que no momento que eu tiro essa foto alguns dados são gravados como detalhes da imagem por exemplo: eu acionei o localizador GPS do tablet então quando a Foto é tirada ela grava a Latitude e a Longitude de onde essa foto foi tirada, a Rua de onde foi tirada, a Data e a Hora que a Foto foi tirada... quando os tablets chegam na empresa essas informações são descarregada para uma base local e é ai que eu preciso pegar os detalhes da foto e armazenar em um determinado campo da tabela..

Alguem tem alguma idéia???

Detalhe toda a aplicação que roda no Tablet é ScriptCase.

Dá uma olhada em EXIF: http://php.net/manual/pt_BR/function.exif-read-data.php
Boa sorte

Olá Carlos,

Isto que você faz é muito interessante e temos poucas demonstração de resultados aqui no fórum.

Você pode dar mais detalhes de como roda a aplicação no Tablet?

Exemplo: Você roda ela usando o navegador do tablet ou instalou direto nele? Se instalou direto, você pode explicar como fazer isto?

Como é feito o acionamento da câmera pela aplicação? Existe alguma coisa no SC que permite isto ou é feito na mão? Como?

Sei que estas respostas ajudarão muitas pessoas além de mim.

Um abraço

Olá a Todos;

 Bem é muito simples, não tem nem um segredo... eu uso o Notebook para desenvolver toda a aplicação como de costume, e com a versão do SC8 melhorou e muito o ajuste dos forms em qualquer tamanho de tela.

vamos passo a passo.

versão do Android que eu uso é a 4.2.2, é só ir no play store e baixar uma app chamado “androPHP”… instala esse cara no tablete pelo play store ele vai instalar pra você o PHP, MySQL e o Apache, por default a porta é a 8080 não mude, depois é so localizar a pasta www que ele cria e descompactar lá as aplicações que você criou no SCxx, qualquer dúvida é só entrar em contato OK.
Há detalhes se você tiver uma rede Wireless você pode acessar o PHPMYADMIN direto do seu notebook ou desktop… show de bola pra você criar o banco de dados. exemplo, no meu caso: quando coloquei na minha rede interna ficou assim: http://10.1.1.167:8080/phpmyadmin… é só ver qual o IP que a sua rede entrega pro Tablet e pronto… seu Tablet virou um Servidor…

O Acionamento da Câmera não tem nem um segredo... quando você clica no botão de Upload da aplicação ele te abre um modal com várias escolha para vc fazer a upload da imagem, são elas: a camera do Tablet, o Gerenciador de arquivo ou outra aplicação que esteja instalada no Tablet como o dropbox... no meu caso eu escolho a Câmera, quando eu bato a foto me aparece uma janela para descartar ou salvar... escolhe salvar e pronto, a Foto que você tirou vai pra sua aplicação. Não existe nem uma formula mágica, nem um script nada, é simples assim.

Carlos,

Obrigado pela excelente dica. Nunca tinha pensado em usar desta forma.

E como você passa as informações que foram feitas no Tablet para o sistema principal?

[]'s

Bom dia Maurélio;

Na minha aplicação no Servidor central ele lê as tabelas que estão no tablet... não esqueça que seu tablet agora também é um servidor, eu tenho uma tabela com os IPs dos tabletes... são 15 tablet´s que vã para campo colher as informações, quando eles chegam na empresa minha aplicação testa quais ips estão ativos na rede... eu leio as tabelas que estão no mysql dos tablet´s e transfiro para as tabelas do mysql do servidor central, apago os registros dos tablet´s e carrego com outra ordem de serviço para o outro dia... EX:

     A aplicação é um levantamento de todas as informações dos imóveis existente na Cidade de Macapá-AP, quais são essas informações:

           - Foto da Fachada do Imóvel ou do Terreno, Latitude e Longitude onde a Foto foi tirada, Endereço completo, Dados do Imóvel, Dados do Terreno, Dados da Construção.

Carlos,

Obrigado por compartilhar com todos estas informações.

Sei que serão importantes para várias aplicações e com as suas explicações deixaram muito mais claras as formas de implementar este tipo de aplicação.

Parabéns.

[]'s

Estou testando uma Dica do Allan, para pegar a Latitude e Longitude da Foto eis o código:

Primeiro: Eu criei uma Biblioteca com o código Abaico

<?php Function gps($coordenada, $hemisfero){ for ($i = 0; $i < 3; $i ++){ $part = explode('/', $coordenada[$i]); if (count ($part) == 1) { $coordenada [$i] = $part[0]; } else if (count($part) == 2){ $coordenada[$i] = floatval($part[0])/ floatval($part[1]); } else{ $coordenada[$i] = 0; } } list($degrees, $minutes, $seconds) = $coordenada; $sign = ($hemisfero == 'W' || $hemisfero == 'S') ? -1 : 1; return $sign * ($degrees + $minutes / 60 + $seconds / 3600); } ?>
   Segundo:  No Evento Ajax onfocus do campo {Latitude} eu passo o seguinte código:

             $exif = exif_read_data('{Foto_Path}');
             $var_latitude = gps($exif["GPSLatitude"], $exif['GPSLatitudeRef']);
             $var_longitude = gps($exif["GPSLongitude"], $exif['GPSLongitudeRef']);

             {Latitude} = $var_latitude;
             {Longitude} = $var_longitude;


   Quando eu faço a upload da foto -> campo "{Foto_Path}"  --> é um campo do tipo "Imagem (Nome de Arquivo)", até ai tudo OK ela faz a upload preenche o campo do formulário, mostra a foto... mais quando eu tento pegar o nome dessa foto do campo '{Foto_Path}' para enviar para exif_read_data() o campo está em branco por isso não consigo extrair o metadado da foto.

    Aguem poderia me dizer porque o campo mostra no forms mais quando vou passar pra alguma variável ele está em branco??????

Bom Consegui resolver!!! Como ao que me parece eu fui o primeiro a precisar criar uma aplicação deste tipo houve poucas respostas no Forum… Então eu Resolvi esmiuçar a fundo a função (exif_read_data), e descobri que o próprio HTML5 já pega automático estas coordenadas(Latitude e Longitude), mais é preciso que os tablets esteja conectado na Internet e não é o caso aqui… eu precisaria realmente pegar as coordenadas do GPS no momento que a Foto era tirada, como devido alguns erros que foram apresentados na extração das coordenadas do GPS, eu tive que me aprofundar mais e mais neste assunto, para que as coordenadas fosse a mais próximo possível eu tive que estudar triangulação das antenas, e chegar a um calculo de mais ou menos 5 min… o que foi aceitável pela empresa.

Foi bom pois com a dificuldade eu tive que correr atrás e aprender e me aprofundar neste assunto, e abriu um Horizonte incrivel para sistemas que usam coordenadas, Giz entre outros…

Bom o script acima na verdade não tem nem hum erro, ele está certíssimo e se alguém precisar ele está ai para todos do Forum… o unico problema que eu estava enfrentando na verdade era apenas uma besteira… a Função não consegue interpretar o caminho da Foto se você passar por um link… ela só consegue interpretar se você passar o caminho físico de onde está a Foto… era apenas isso!!!

eis o Resultado da Coleta da Foto e Do GPS…

Valeu pela força de todos.

Carlos Bom dia.
Muito interessante essa sua app. parabéns.
A camera do tablet é acionada automaticamente na hora do upload sem programação manual?
Teria como você mostrar para nós como resolveu o problema de capturar o meta dado da foto?

Olá Celso;

Sim, no momento do click do botão para Upload da imagem ele aciona as opções de escolha por onde vc vai fazer a upload, entre elas a camera do tablete está no meio... quando você bate a foto aparece duas opções na camera... Descartar Ou Salvar, quando você salva ele carrega o campo do Upload...


 Quanto ao MetaDados... é só copiar o script que eu passei na msg anterior...


 Como eu Resolvi o Problema do script... eu criei um campo chamado CaminhoFoto e passei o seguinte endereço ("../_lib/Uploads/Fotos/") concatenando com o campo NomeDoArqFoto... pronto o script consegui resolver o problema do metadado.

  ai eu passo assim:  $exif = exif_read_data('{CaminhoFoto}');

  No Evento Ajax onfocus do campo {Latitude} eu passo o seguinte código:

             $exif = exif_read_data('{CaminhoFoto}'); //cria a variavel com os dados de metadados

             $var_latitude = gps($exif["GPSLatitude"], $exif['GPSLatitudeRef']); 
             $var_longitude = gps($exif["GPSLongitude"], $exif['GPSLongitudeRef']);

             {Latitude} = $var_latitude;
             {Longitude} = $var_longitude;

  Detalhes:

        Na Configuração da Câmera seta a propriedade para salvar as coordenadas do GPS.
1 Curtida

Bom dia Carlos. Lhe enviei um email sobre esta rotina.
Por favor veja se pode me ajudar.
Att
Marcio Akira Okamura

Olá, estou precisando desenvolver uma app para capturar a foto do usuário e guardar a localização do mesmo.
Tentei utilizar os seus ensinamentos acima. Mas não deu certo.

A aplicação não carrega os dados da foto. Poderia ajudar?

Tentei com a biblioteca externa e também interna e mesmo assim não carrega os dados.

Desde já agradeço.