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

descobrir tamanho de imagem


Eric Freitas

Pergunta

9 respostass a esta questão

Posts Recomendados

  • 0

como assim não possui os atributos width e height?

function verifica_imagem(){
    myImage = new Image();
    myImage.src = 'imagens/imagem1.jpg';
    largura = parseInt(myImage.width);
    altura = parseInt(myImage.height);
    alert(largura + '\n\n' + altura);
}

Link para o comentário
Compartilhar em outros sites

  • 0

fercosmig

eu tive q usar tua função dentro do php então fiz assim:

function verifica_imagem(url){
    myImage = new Image();
    myImage.src = url;
    largura = parseInt(myImage.width);
    altura = parseInt(myImage.height);
    alert(largura + '\n\n' + altura);
}

// PHP
...
$retornarImg.= " window.onload = window.parent.verifica_imagem('$filename');";
...

o que eu preciso é saber o tamanho para calcular o tamanho que a div vai ficar

na url o php passa aurl completa do arquivo, mas ele me retorna altura e largura = 0

sabe onde eu posso pegar uma referencia desse objeto para eu poder dar uma estudada ?

-----

respondendo sua pergunta: ele não possui esses atributos na tag img

Link para o comentário
Compartilhar em outros sites

  • 0

cara...

eu fiz uma página de upload de imagens aqui na empresa e uso esta função para verificar a dimensão das imagens... geralmente a 1ª vez que eu tento fazer o upload o tamanho vem 0 da segunda vez em diante vem o tamanho da imagem

muito esquisito... não descobri porque e não tá dando tempo de eu correr atras... sendo assim.. estou tendo que me acostumar com isso... até a hora que eu ficar com raiva ahahahha

olha a função que eu uso aqui (chamo ela no onSubmit do form):

function verifica_imagem(){
    myImage = new Image();
    myImage.src = document.frm1.fl1.value;
    largura = parseInt(myImage.width);
    altura = parseInt(myImage.height);
    if( largura > 95 || largura < 20 || altura > 95 || altura < 20 ){
        mensagem = 'Imagem fora do tamanho especificado.\n';
        mensagem = mensagem + 'largura/altura devem estar entre 20 e 95px';
        alert(mensagem);
        return false;
    }
}

object Image() => http://www.devguru.com/technologies/javascript/10699.asp

Link para o comentário
Compartilhar em outros sites

  • 0

eric já tentou usar o getimagesize do php?

não sei se intendi muito bem sua duvida mas eu criei uma funçaozinha com php e java

o php recebe as dimensoes e joga na função java

<?php

$id = $_GET['id'];

$query_img = mysql_query("SELECT * from categ where id_categ=$id");

$query_result = mysql_fetch_row($query_img);

$image[0] = getimagesize("$query_result[5]");

$image[1] = getimagesize("$query_result[6]");

$x[0] = $image[0][0];

$y[0] = $image[0][1];

$x[1] = $image[1][0];

$y[1] = $image[1][1];

?>

<script language="JavaScript" type="text/javascript">

function Detalhes1(url)

{

window.open(url, '_blank', "width=<?php echo $x[0] ?>,height=<?php echo $y[0];?>,toolbar=no,location=no,directories=no,status=no");

}

function Detalhes2(url)

{

window.open(url, '_blank', "width=<?php echo $x[1] ?>,height=<?php echo $y[1];?>,toolbar=no,location=no,directories=no,status=no");

}

</script>

Editado por brunocasado
Link para o comentário
Compartilhar em outros sites

  • 0

Senhores, vou viajar.

Acho que acontece um lag. As funções terminam sempre antes de começar outro comando, mas só as funções e alguns comandos.

Quando vocês criam uma imagem e pegam seus atributos, a imagem é criada com sucesso, porém na sua criação os atributos são primeiramente setados pelo interpretador e depois são lidos. Isso demora um tempo e antes disso acontecer vocês atribuem o valor às respectivas variáveis.

Então, dá pra presumir que ao criar uma imagem, o interpretador seta primeiro com 0 os atributos do tipo Number.

Solução ( eu acho ):

<input type="file" id="arquivo" name="arquivo" />
window.onload=function(){
                 var arq=document.getElementById("arquivo")
                 arq.onchange=function(){verificaTamanho(this.value)}
                 
                 function verificaTamanho(src){
                   var img=document.createElement("img")
                   img.src=src
                   setTimeout(
                       function(){
                        alert(img.width)
                        alert(img.height)
                       }, 1)

                 }
                
                }

O setTimeout dá um tempinho a mais, suficiente para que de tempo para o objeto ser criado totalmente.

Não usei new Image() porque ela é uma função menos pura, é poluída, ou seja, é uma função que contém mais comandos em seu prototipo para conveniencia, portanto demora mais para ser executada e o 1 milisegundo não seria suficiente.

O motivo pelo qual sempre retorna zero para o eric pode ser pelo fato do navegador não estar usando cache, ou caso o fato da segunda vez funcionar não tenha haver com cache, o hardware do fercos pode ser melhor. Talvez. Caso dê problema apenas no FF e esteja testando localmente, tente usar a imagem no mesmo nível do htm, pode ser alguma restrição de segurança, por se tratar de url.

Aquele abraço.

Link para o comentário
Compartilhar em outros sites

  • 0

como assim não possui os atributos width e height?

CODE
function verifica_imagem(){

myImage = new Image();

myImage.src = 'imagens/imagem1.jpg';

largura = parseInt(myImage.width);

altura = parseInt(myImage.height);

alert(largura + '\n\n' + altura);

}

Utiliza recursividade que funciona; mas lembre-se de dar um limite para caso realmente não exista o tamanho o cod não faça o browser

travar.

function verifica_imagem(){
var try = 3;
    myImage = new Image();
    myImage.src = 'imagens/imagem1.jpg';
    largura = parseInt(myImage.width);
    altura = parseInt(myImage.height);
 if((!altura) && (!largura)){
  try--;
  if(try > 0){
   verifica_imagem();
  }else{
   alert('Erro ao verificar o tamanho!');
   return false;
  }
 }else{
   alert(largura + '\n\n' + altura);
 }
}

Testa pois acabei de bolar o codigo, melhora ele pois a ideia é somente que utilize a recursividade;

Editado por Ediat
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,5k
×
×
  • Criar Novo...