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

Imagem animada semelhante a dum GIF animado


Eu o Mister HTML !!!

Pergunta

Pessoal, com certeza vocês já ouviram falar de GIF animado, aquela imagem que fica animando continuamente. é uma alternativa para pessoas que não querem fazer filmes interativos em Adobe Flash. Mas usar o GIF animado tem certas desvantagens: Se você pegar uma foto em 24 bits de cores e usar um software e salvar em GIF para esperar que sua fotografia fique menor, vai se decepcionar!: A qualidade da imagem ficará horrível (por que o GIF tem uma limitação de 8 bits de cores - 2*2*2*2*2*2*2*2 = 256 cores no máximo!. além do mais, o GIF faz uma compactação LZW, que faz que uma cor cinza cor sólida por exemplo não fique no mesmo estado antes de salvar a imagem). Nesse tópico, vamos aprender como fazer uma fotografia ficar animada no navegador e com qualidade de 24 bits (com inspiração de origem nos velhos GIFS animados). é claro que não existe AINDA JPG, BMP, e PNG animados própriamente ditos!. para isso temos que utilizar um script em JAVASCRIPT especial para isso. A seguir todos os navegadores passaram no teste:

Internet Explorer 7

Mozilla firefox 2

Opera 9

Netscape Navigator 9

Avant Browser 11

Safari 3 beta

O CÓDIGO!:

<body style="margin: 0; padding: 0" scroll=no>

<img id="anim" src="Ice_0.png" width=512 height=384>

<script>
function animGold(){
//CONFIGURE A ANIMAÇÃO
prefix = "Ice" // nome de toda a seqüência de imagens
extension = "PNG" // extensão (BMP, JPG, PNG, GIF)
delayTime = 10 // tempo (em milissegundos) de espera entre um quadro e outro
framesLength = 128 //Quantos quadros terá a animação
// FIM!

including = unescape(anim.src)
including = including.substring(including.lastIndexOf('_')+1, including.lastIndexOf('.'))

nv = new Array()
for (x=0;x<(framesLength+1);x++){
if (x != framesLength){
nv[x] = x+1
}
else {
nv[x] = 0
}}

anim.src = prefix + "_" + nv[including] + "." + extension
setTimeout("animGold()", delayTime)
}
animGold()
</script>

Lembrando: se você tiver 100 imagens, renomeie-as para (EXEMPLO)

teste_0.jpg, teste_1.jpg, teste_2.jpg ... teste_100.jpg.

Notas:

AS IMAGENS E O ARQUIVO HTM DEVEM SE ENCONTRAR NUMA ÚNICA PASTA, CASO CONTRÁRIO O SCRIPT NÃO FUNCIONARÁ.

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

Olha, a idéia é excelente!!!!

Eu concordo com o amigo do post acima...falta um pouco de explicação um pouco mais detalhada.

Para quem conhece javascript é um script bem simples e de fácil entendimento. O código fala por si próprio.

Seria interessante a pessoa que estiver implementando, fazer um gif vagabundo para o caso do navegador não suportar javascript. Nesse caso, haveria o efeito bonitinho pra quem suporta e o mais vagabundinho pra quem não suporta ou talvez usar imagens estáticas ao invés de gif vagabundo.

Coloca um exemplo online se puder...isso facilitaria e seria interessante.

Apenas sugestões...Bom post :P

Link para o comentário
Compartilhar em outros sites

  • 0

Eu trabalho com navegadores recentes, mas é teoricamente improvável que ainda, nesse tempo de Web 2.0, nesse tempo que só falta menos de dez dias para 2008, nesse combate comercial entre navegadores ainda EXISTA navegador que não suporta JavaScript. Só os navegadores antigão, que nem eu, e nem mais o bobo dos seres humanos vai querer usar. Não necessita ser JPG. Também pode ser GIF, BMP ou PNG. Se quer mais compabilidade ainda, exclua o PNG e o BMP da lista por serem imagens mais pesadas, um terror para conexões discadas de 40 Kbps. Além do mais, o PNG só tem compabilidade com navegadores mais atuais. Por outro lado, o JPG, apesar de suportar 24 bits e ter arquivos menores, ele perceptivamente ele pode acabar por deteriorar uma qualidade duma foto. é por isso que deixei de trabalhar com o JPG, por que por mais tonto que seja, considero esse formato como "obsoleto". O jeito é usar um script em JS para detectar o browser e sua versão. Têm as variáveis navigator.appName e navigator.appVersion para isso e if...else para fazer comparação. E ressaltando, não seria obsoleto por afirmar que ainda existe browser que não aceita JavaScript? sabendo-se que 9 entre 10 páginas usam essa linguagem?

Como sou novato em PHP, eu ainda não posso afirmar se tem como checar se o browser supostamente NÃO tem suporte a JavaScript, mas caso positivo, você pode utilizar uma linguagem server-side como o PHP...

Olhou no código? viu alguns comentários? eles explicam (E MUITO BEM) o que que a variável significa!

Link para o comentário
Compartilhar em outros sites

  • 0
Como sou novato em PHP, eu ainda não posso afirmar se tem como checar se o browser supostamente NÃO tem suporte a JavaScript, mas caso positivo, você pode utilizar uma linguagem server-side como o PHP...

Seria bem paradoxal usar uma linguagem server-side pra descobrir se algo no cliente funciona... pra isso que você falou existe a tag noscript...

Link para o comentário
Compartilhar em outros sites

  • 0

Oi, amigo, então você não trabalha com Browsers novos rsrsrs.

Acho que não fui explicativo ou muito claro, quando eu disse navegadores que não suportam, inclui-se também os novos que suportam e que os usuários bloqueiam o javascript por motivos de segurança. Estava implicito, eu pensei que não precisasse explicar....

Em tempos de web 2.0 amigo, seu site tem que funcionar com ou sem javascript, e como você TRABALHA com browsers novos, como disse, já deve saber disso, pois já deve ter feito alguma aplicação BEM FEITA em Ajax.

Link para o comentário
Compartilhar em outros sites

  • 0

Criei um novo código, e que agora funciona com e sem JavaScript. E procurei explicar com mais detalhes como funciona. Espero satisfazer.

<body>

<!-- Consegui melhorar o código. Caso o navegador está com JAVASCRIPT desabilitado, uma imagem GIF é exibida no lugar da imagem animada de 24 bits, caso positivo vem uma imagem de 24bits animada -->

<!-- Caso o navegador não suportar java script: a tag NOSCRIPT também não é reconhecida pelo navegador, acabando por exibir a imagem. e como o script em JAVASCRIPT não é reconhecido pelos navegadores, sua função fica inutilizada, pois o navegador pensará que é um comentário -->
<noscript>
<img src="Ice.gif" width=512 height=384>
</noscript>

<!-- Caso positivo: os navegadores testados, todos têm suporte a JAVASCRIPT. e como os navegadores que suportam JAVASCRIPT, vão ocultar o que estiver dentro de NOSCRIPT e vão interpretar o código JAVASCRIPT, mesmo com delimitadores de comentários dentro da tag SCRIPT. -->
<script>
<!--
document.write('<img id="anim" src="Ice_0.png" width=512 height=384>')
function animGold(){
prefix = "Ice" //Prefixo de todos os quadros
extension = "PNG" //Extensão de todos os quadros (PNG, BMP, JPG e GIF)
framesLength = 128 //Número de quadros
delayTime = 10 //Tempo de espera em milissegundos para um quadro e outro

/*
Para que o script funcione, favor colocar as imagens no mesmo diretório junto com o arquivo .htm. 
Além disso, todas as imagens deve ter um prefixo (o valor da variável prefix), seguido dum underline (_) mais o número índice (de zero até o número especificado na variável framesLength). e depois um delimitador (.) que separa o nome do arquivo da extensão (variável extension) e extensão. Nesse caso, como delayTime está definido como 10, a imagem animada terá 100 quadros reproduzidos por segundo.
porque:

1 segundo = 1000 milisegundos
quadros por segundo  = 1000 dividido com o valor de delayTime
1000/10 = 100 quadros

Caso a imagem chegue ao último quadro, a animação recomeçará.

Esse script foi testado no Internet Explorer 7, Mozilla Firefox 2, Opera 9, Netscape Navigator 9, Avant Browser 11 e Apple Safari 3. Funcionou em todos os navegadores
*/

including = unescape(anim.src)
including = including.substring(including.lastIndexOf('_')+1, including.lastIndexOf('.'))

nv = new Array()
for (x=0;x<(framesLength+1);x++){
if (x != framesLength){
nv[x] = x+1
}
else {
nv[x] = 0
}}

anim.src = prefix + "_" + nv[including] + "." + extension
setTimeout("animGold()", delayTime)
}
animGold()
-->
</script>

Link para o comentário
Compartilhar em outros sites

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,3k
    • Posts
      652,3k
×
×
  • Criar Novo...