Ir para conteúdo
Fórum Script Brasil
  • 0

como aprender uma linguagem


toramau

Pergunta

Oi pessoal.

Estou iniciando meu aprendizado em javascript. Todos encontram a mesma dificuldade que eu. A internet oferece muitos cursos gratuitos - no youtube principalmente - mas todos ensinam os conceitos básicos e não se aprofundam a uma explicação mais aprofundada do assunto. O que nos leva sempre a um conhecimento superficial. Inclusive em cursos presenciais aqui na minha cidade é a mesma coisa. Não se ganha embasamento para compreender o conteúdo e a nomenclatura didática na internet.

Este código abaixo serve para identificar a orientação de uma foto a partir de um input do tipo file. Quando implementei ele e tentei ajustá-lo a partir de um arquivo image não consegui obter sucesso. Gostaria que alguém dissecasse este código de maneira a dar uma comprensão geral. Eu sou do tipo que gosta de fazer sozinho por meio de testes pois acredito que seja o melhor caminho para o aprendizado de um programador. Contudo, existem momentos que não conseguimos resposta em lugar algum. Seria de muita utilidade uma explicação detalhada sem me oferecer a solução direto pois eu teria avanço ao invés de um serviço entregue. Caso não seja possível, espero que entendam qual é o problema e me sugiram outra solução. Desde já, agradeço.

        <input id='input' type='file' src="recomendacoes.jpg"    />

<script type="text/javascript">
            function getOrientation(file, callback){
            var reader = new FileReader();    // Object FileReader
                    reader.onload = function(e){
                    // alert(document.getElementById('fotoB'));    // Object HTMLImageElement to DataView

                    var view = new DataView(e.target.result);    // Object DataView
                    alert(e.target.result);                            // Object FileReader()
                        if (view.getUint16(0, false) != 0xFFD8) return callback(-2);
                    var length = view.byteLength, offset = 2;
                                while (offset < length) {
                                  var marker = view.getUint16(offset, false);
                                  offset += 2;
                                  if (marker == 0xFFE1){
                                    if (view.getUint32(offset += 2, false) != 0x45786966) return callback(-1);
                                    var little = view.getUint16(offset += 6, false) == 0x4949;
                                    offset += view.getUint32(offset + 4, little);
                                    var tags = view.getUint16(offset, little);
                                    offset += 2;    /*    incrementa    */
                                    for (var i = 0; i < tags; i++)
                                      if (view.getUint16(offset + (i * 12), little) == 0x0112)
                                        return callback(view.getUint16(offset + (i * 12) + 8, little));
                                  }
                                  else if ((marker & 0xFF00) != 0xFF00) break;
                                  else offset += view.getUint16(offset, false);
                                }    /* fim do while */
                    return callback(-1);
                    };                    /*     fim da função function(e)    */

            reader.readAsArrayBuffer(file);
            // reader.readAsDataUrl(file);
            }                /* fim da função getOrientation()    */

var entrada = document.getElementById('input');    // [Object HTMLInputElement] to [Object DataView]
entrada.onchange = function(e){        //onchange
      getOrientation( entrada.files[0],
                      function(orientation) {    alert('Orientção: ' + orientation);  }
      );
}
</script>    

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...