saber tamanho px de uma imagem - php

candycane

Power Member
Boa tarde,
é possivel eu saber o tamnho em pixels de uma imagem antes de fazer o move_upload_file?

eu so quero permitir o envio de uma imagem se o tamnho for menor de 800px x 205px

como é que se faz isso?

Já vi que com o getimagesize só é possível se a imagem ja estiver sido uploada :(
 
boas.
se não quiseres recarregar a página tens que fazer em javascript como disse o mascker

se isso não for problema e quiseres fazer em PHP, isso faz-se com as funções imagex e imagey

ex:
PHP:
if (imagex($imagem)>800 || imagey($imagem)>205)
   //erro, não aceita a imagem

não tenho a certeza se para o parametro das funções podes usar a variavel $_FILES, ou se precisas primeiro de criar a imagem com a função imagecreatefromjpeg ou imagecreatefrombmp
 
Acho que é imagesx e imagesy :P
E sim, primeiro tens de criar a imagem com um imagecreatefrom[jpeg|png|gif|bmp], porque o parâmetro que passas no images[x|y] é o "handle" da imagem criada por aquela função.
 
Última edição:
A nivel de javascript suponho que pode funcionar, mas vais.te ver negro para o por a fazer load da imagem do caminho do ficheiro no input (uff), e tenho um feeling que nao vai funcionar cross-browser (isto se for sequer possivel). não pode funcionar, pois para te permitir abrir uma imagem local e tirar.lhe as dimensões significa que ia permitir a um site acesso aos ficheiros locais de um PC, que por sua vez ia ser uma enorme falta de segurança ;)

A melhor e mais fiavel maneira de fazer isso e' a nivel de PHP, vais precisar da extensão GD instalada e de um código deste genero:

formulario de upload:
Código:
<form enctype="multipart/form-data" action="upload.php" method="POST">
<input name="imagem" type="file">
<input type="submit" value="Upload">
</form>

upload.php
PHP:
$caminho_imagem = $_FILES['imagem']['tmp_name'];
$xy = getimagesize($caminho_imagem);

if ($xy[0] > 800 || $xy[1] > 205) {
  //erro 
} else {
  // guardar imagem - move_uploaded_file etc etc
}

Não se justifica estares a usar o imagecreatefrombla() - alem que primeiro ainda tinhas de descobrir a extensão para usar a função correcta - mais a imagesx() mais a imagesy() so' para ir buscar as dimensões, e' mais simples usares a função getimagesize() que te da' logo o que precisas.
 
Última edição:
Back
Topo