Hostnet, patrocinador Master desde 2004

MX Masters - Vídeo Aulas, Artigos, Tutoriais, Cursos gratuitos e muito mais » Programação » PHP » Redimensionamento de imagem dinâmico

Redimensionamento de imagem dinâmico

Salve Amigos do Mxmasters, David CHC, em mais uma video aula de PHP. Nessa video aula iremos aprender a como redimensionar uma imagem vinda do formulário. Isso é muito util caso vocês desejem criar uma galeria de fotos.
Tenham uma boa Video aula.

David CHC

Líder do time técnico do Grupo MX Cursos. Trabalha na área de Frontend e Backend. Tendo conhecimentos em Padrões Web( xhtml, html5, css), javascript( framework jQuery), PHP, Python, Ruby, MySQL.

Adicionar aos amigos

Últimos posts deste autor

Comentários

183 Comentários para Redimensionamento de imagem dinâmico

  1. David Chc disse:

    Adilson Costa entre em contato com sua hospedagem, e veja se tem possibilidade de alterar configurações do php.ini

  2. Adilson Costa disse:

    David Chc, Parabens pela Video-aula. Tem como eu alterar essa opção no próprio codigo? Pois pretendo trabalhar com imagens com 8 MB ou mais

  3. David Chc disse:

    Funciona Adilson, o problema pode ser as configurações do PHP, como upload_max_filesize e post_max_size, pode está setado para um tamanho menor que dá imagem, por padrão são 2MB

  4. Adilson Costa disse:

    Esse código não funciona com imagem grande tipo 4000×2500 ?

  5. eder bitten disse:

    ola, bom otima explicação, mais eh o seguinte, como fazer para a imagem ir para uma pasta dentro do servidor, no local host funciona certinho no externo dah um um erro PHP Warning: imagejpeg() [function.imagejpeg]: Unable to open ” for writing: Permission denied in
    desde jah agradeço, abraço e parabéns vlw

  6. vmolina disse:

    David muito bom o tutorial. Está acontecendo uma coisa que ta me deixando maluco, quando pego uma imagem muito grande ex. 4500×3000 localhost redimensiona e envia o arquivo para a pasta desejada, mas no servidor web o procedimento não é realizado, sei que o problema é no servidor web, gostaria de saber se vc tem alguma idéia do que seja? desde já muito obrigado e parabens.

  7. David CHC disse:

    Kleber, não posso te afirma, quando usava , nunca influenciou nesse requisito.

  8. David CHC disse:

    E arquivos menores, ele redimensiona ?

  9. Kleber disse:

    Ola David!

    Eu estou usando esse plugin e ele não redimensiona arquivos maiores que 2mb.
    O arquivo é enviado mas não é redimensionado e não sei o que fazer.
    Enviei um arquivo de 19mb e foi normal, porem não redimensionado.
    Eu verifiquei as configurações do php no servidor e estão assim:

    file_uploads ——————–>on
    upload_max_filesize ——–>64M
    post_max_size —————>64M
    max_input_time ————–>60
    max_execution_time ——>30

    Sera que tem uma luz no fim do túnel?

  10. David CHC disse:

    João não tem como redimensionar antes. O q vc pode fazer para melhorar a experiencia do seu cliente, é colocar uma barra de progresso, vc pode utilizar o uploadify ( http://www.uploadify.com/ ), ou faz um truque com javascript: Pega gif animado de carregamento, e deixar ele ocultado, e atribuir uma ação no input para q ele mostre esse gif.

  11. João Marcos disse:

    É possivel redimensionar uma imagem antes de fazer o upload dela com o PHP?

    Obs: assim o tempo de upload da imagem fica mais rápido.. estou construindo um site de imobiliária, porém o administrador faz upload de imagens de imóveis, só que ele tira fotos com uma camera de alta resolução, ai demora muito para enviar os arquivos, e sabe como é usuário, pensa que o site ta travado e acaba fechando e pensando que o problema é do site..

  12. Rodrigo disse:

    Cara, Muito bom o Aula, muito boa mesmo, vou favoritar seu site, gostei muito.
    Por falar nisso, preciso de mais conteudo de ZEND Framework, dicas , video aulas, livros e afins ou tudo juntos :).
    Seguem meu contato: rodrigobarbosa171@hotmail.com
    http://www.rodrigobarboza.com.br

  13. David CHC disse:

    Basta vc resgatar as dimensões da imagem:

    list($largura, $altura) = getimagesize($imagem_f['tmp_name']);

    Agora vc pode fazer a condição de largura e altura máxima

  14. erison disse:

    muito bom, como sempre otimas video aulas.
    mas eu esto com u problema,

    tenho esse codico de uplod

    $imagem_f = $_FILES['imagem_f'];
    // Pega extensão da imagem
    preg_match(“/.(gif|bmp|png|jpg|jpeg){1}$/i”, $imagem_f["name"], $ext);

    // Gera um nome único para a imagem
    $imagem_f2 = md5(uniqid(time())) . “.” . $ext[1];

    // Caminho de onde ficará a imagem
    $caminho_imagem = “../imagem/imagem_produto/” . $imagem_f2;
    // Faz o upload da imagem para seu respectivo caminho
    move_uploaded_file($imagem_f["tmp_name"], $caminho_imagem);

    e queria redimensionar as imagens para não passa nem a largura e nem a autura de 800px como fasso?

  15. Murillo disse:

    não acredito que eu fiquei mais de 1 ano procurando alguma forma de fazer upload com redimensionamento de imagem e é tão simples assim. Estou fazendo um site com upload de imagens e logo quando acabar quero fazer uma loja virtual. Mais enquanto isso vou estudar jquery porque só programação com refresh não agrada muito os usuários.

  16. David CHC disse:

    No caso o tempo de executação passou o estipulado pelo PHP, tbm pode ser alterado, você pode tentar colocar no inicio do script : set_time_limit(0) , ou modificar no PHP max_execution_time

  17. Sethend disse:

    Boa noite David, primeiro quero parabenizar pela video aula, ficou bem explicativa, o unico problema que estou enfrentando é o tamanho da imagem que tento fazer upload. algumas imagens de resolução maior não fazem upload. você sabe o que poderia estar acontecendo?
    segue meu e-mail – sethend@gmail.com
    obrigado.

  18. Sethend disse:

    Boa noite David, primeiro quero parabenizar pela video aula, ficou bem explicativa, o unico problema que estou enfrentando é o tamanho da imagem que tento fazer upload. algumas imagens de resolução maior não fazem upload. você sabe o que poderia estar acontecendo?
    segue meu e-mail – sethend@gmail.com
    obrigado.

    • David CHC disse:

      No caso isso é na configuração do PHP, por padrão, vc estiver testando localmente, é configurado para 2MB, em hospedagem eles aumentam um pouco.

      Vc teria que modificar no arquivo php.ini :

      post_max_size = 20M
      upload_max_filesize = 20M

      • Sethend disse:

        Nossa obrigado pela resposta rapida.
        segue o erro que aparece.
        Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 6400 bytes) in E:wwwuntupload.php on line 23

  19. Melfre21 disse:

    Ola David cara assisto suas aulas e tenho dificuldade por ser iniciante em algumas
    EX 01: na aula de Query String como faço se tenho arquivos em PASTA diferentes

    EX 02: na aula de URL AMIGAVEL como faço para obter uma url desse tipo http://www.meusite.com.br/noticias/titulo-da-noticia.html e tambem paginação meusite.com.br/PAGE/3

    • David CHC disse:

      Sobre o primeiro, vc pode passar essa informação via URL, exemplo:

      ?pagina=noticia/list

      Depois é só separar e definir que o primeiro sempre será a pasta e o segundo o arquivo.

      Sobre o segundo. Nesse caso vc tem que gravar a URL amigavel no banco de dados, assim vc consegue resgatar a URL e fazer a pesquisa no banco de dados.

      Sobre a paginação, dá uma olhada em alguns comentarios acima q mostro uma maneira q acho interessante a paginação, usando a aglo assim:

      /noticias/page:3

  20. David, obrigado pela ajuda e prontidão, mas acho que vou desisitir disto pois ainda nao consegui e nao vou ficar lhe incomodando toda hora.

    usei a função a cima e dá este erro:

    Warning: Missing argument 5 for upload(), called in C:\wamp\www\estudio\spanel\portfolio_mult_foto_antes.php on line 40 and defined in C:\wamp\www\estudio\spanel\upload_func.php on line 1

    a linha tem: function upload($tmp, $nome, $width, $height, $pasta){

    mesmo assim obrigado e desculpe o incomodo, acho que vou ter que ensinar a tratar todas as imagens antes de fazer o upload.

    • David CHC disse:

      @Cidicley , eu acrescentei mais uma parametro que é a altura padrão, pq vc quer q se a largura for maior que altura, vc defini uma largura padrão, se for a altura maior q largura, vc defini uma altura padrão:

      $file = $_FILES['imagem'];
      upload($file['tmp_name'], $file['name'], 800, 600, 'uploads');
      
  21. bom dia, tentei aqui mas nao consegui, estou usando o sistema neste site que estou terminando:

    http://www.masantosfotografias.com

    estou mandando um link a baixo com meu arquivo upload e minha função se puder der uma olhada para ver se teria como fazer esta condição dos tamanhos da imagem:

    http://www.joaoeudes.com.br/spanel.rar

    aguardo contato, isto é muito importante no momento se puder ajudar ficarei muito grato

    • David CHC disse:

      @Cidicley, vc já tem as dimensões da imagem, q vc recupera com imagesx e imagesy, e assim vc faz o calculo:

      
      function upload($tmp, $nome, $width, $height, $pasta){
      	$img = imagecreatefromjpeg($tmp); 
      	$x = imagesx($img);
      	$y = imagesy($img);
      	if($width >  $height){
      	 $largura = $width;
      	 $altura = ($largura*$y)/$x;
      	}else{
      	 $altura = $height;
      	 //faz o calculo
      	}
      	
      	$nova = imagecreatetruecolor($largura,$altura);
      	imagecopyresampled($nova, $img, 0, 0, 0, 0,$largura,$altura, $x, $y);
      	imagejpeg($nova, "$pasta/$nome");
      	imagedestroy($nova);
      	imagedestroy($img);
      	return($nome);
      }
      
  22. olá estou de volta com mais uma duvida, no meu sistema a largura fixa está de 800, o que vai fazer com que a imagem fique com 800×600, considerando que a imagem original estaria na proporção 4×3. ai fica perfeita.

    agora estou tendo problema quando o cliente cadastra uma imagem em uma proporção 3×4, isto é a imagem é mais alta do que larga. ai fica muito grande pois vai ficar com 800 de largura e mais de 1.000 de altura a minha ideia seria verificar se a altura é maior que a largura caso seja em vez de ter 800 como valor fixo para a nova imagem colocar 600. assim nao ficaria muito diferente.

    a duvida é: como pego pelo $_file[img] a largura e altura da imagem para fazer a verificação?

    abraço a todos espero que alguem possa ajudar.

    • David CHC disse:

      @CIDICLEY , vc pode usar o getimagesize, indicando o arquivo temporario.

      list($width, $height, $type, $attr) = getimagesize($_FILES['img']['tmp_name']);
       if($width > $height){
           //calcula de acordo com largura
      }else{
        //calcula de acordo com altura
      }
      
      

      Vc pode atribui a função mais um paramentro que é altura padrão. O calculo será utilizando uma regra de 3 simples, como foi feito para largura, basta fazer para altura.

Deixe uma resposta

Você precisa fazer o login para publicar um comentário. Caso não tenha uma conta, cadastre-se

Últimas do site

Grupo MX Internet LTDA - Todos os direitos reservados