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

imagecreate


Thiago M.

Pergunta

Olá pessoal, bom to com um problema muito muito estranho mesmo, bom vamos ao que se passa:

eu criei uma função para redimencionar imagens com php usando o imagecreatefromjpeg...

onde no banco de dados será gravado o nome da foto que será gerada em um rand e o caminho...

até ai tudo bem, adicionei lá umas fotos e tudo mais pra ver se funcionava, ai me apareceu um problema

algumas fotos ele está gravando o nome e o caminho no banco de dados e redimencionando a imagens e salvando na pasta que eu designei porem algumas fotos ele salva apenas o caminho da foto no banco e mais nada.

-ou seja com algumas ele não faz o rand e portanto não salva no banco e também não cria a imagem nova que deveria ser enviada para as pastas designadas

ps: São sempre as mesmas fotos! as que dão certo sempre dão e as que dão errado sempre dão errado.

ps do ps: E sim as imagens são todas jpeg.

aqui está o código de quando clica-se no botão para enviar a imagem....

if(isset($_POST['enviar']) == 'enviar'){
  $foto = $_FILES['foto'];

  if($foto['type'] == 'image/jpeg'){

      $name = md5(uniqid(rand(), true)).".jpg";
      Redimencionar($foto, $name, 1000, "imagens/fotosg"); // aqui salvo a imagem grande em uma pasta
      Redimencionar($foto, $name, 200, "imagens/fotosp");  // e aqui a mesma em tamanho pequeno


      
  }


}
e aqui está a respectiva função para os dados
function Redimencionar ($imagem, $name, $largura, $pasta){
    $img = imagecreatefromjpeg($imagem['tmp_name']);
    $x = imagesx($img);
    $y = imagesy($img);
    $altura = ($largura * $y)/$x;

    $nova = imagecreatetruecolor($largura, $altura);

    imagecopyresampled($nova, $img, 0, 0, 0, 0, $largura, $altura, $x, $y);
    imagejpeg($nova, "$pasta/$name");
    imagedestroy($img);
    imagedestroy($nova);

   return $name;



}

alguém tem idéia do porque de funcionar com umas imagens e outras não?

Obrigado pela atenção.

abraço!

Editado por *FIT*
Adicionar as tags [code]
Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

^_^ Olá Thiago,

Pelo que eu entendi, tem algumas fotos que não grava nem o nome que você gera, e nem a imagem. E sempre são as mesmas.

Será que essas fotos estão passando nessa linha do seu código?

if($foto['type'] == 'image/jpeg'){

Verifique o type dessas fotos e veja se são diferentes. Porque é nesse ponto que verifica o tipo, gera a imagem e o nome. A pasta você já tem guardado em $pasta, por isso você consegue gravar a pasta.

Verifica um detalhe que já ocorreu comigo: tem arquivos jpeg que são gravados como jpg e outros jpeg...

^_^

Link para o comentário
Compartilhar em outros sites

  • 0

Olá thiago, no caso ai sua solucao so esta para images em .jpg

Se a imagem for em JPG

imagecreatefromjpeg($arquivo);
Em PNG
ImageCreateFromPNG($arquivo);
Em GIF
ImageCreateFromGIF($arquivo);
E ASSIM PRA CRIAR USAS RESPECTIVAS IMAGENS USA-SE
imagejpeg(); 
imagepng(); 
imagegif();
Espero que tenha ajudado, mais acho que não é o seu caso, então concordo com a teoria do Sandro2011 algumas imagens são de extensão .jpeg então como você esta pondo .jpg sendo obrigatoriamente escrito pelo seu script:
$name = md5(uniqid(rand(), true)).".jpg";

Esta ai do caso algumas não funcionarem, boa percepcao Sandro2011!

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

  • 0

Olá galera, dei uma olhada no que vocês dicerão e fiz alguns testes com as fotos que davão erros e as que não davam que foi o seguinte:

eu peguei uma foto que dava erro e mandei dar um print_r no $foto e olha o que apareceu

Array ( [name] => oioioi.JPG [type] => [tmp_name] => [error] => 1 => 0 ) // como podemos ver o type está sem o imagem/jpeg. e a extenção é .JPG em maiusculo

aqui eu pego uma que funciona para ver o que acontece.

Array ( [name] => anime_wallpapers364.jpg [type] => image/jpeg [tmp_name] => C:\wamp\tmp\php27.tmp [error] => 0 => 103854 ) // aqui deu tudo certo porem notamos que a extenção está em jpg minusculo.

e no terceiro teste eu peguei o oioioi.JPG joguei no paint e salvei ele como oioioi2 e selecionei a opção de JPEG vejamos o que nos veio...

Array ( [name] => oioioi2.JPG [type] => image/jpeg [tmp_name] => C:\wamp\tmp\php28.tmp [error] => 0 => 109959 ) // deu certo, porem o JPG está em maiusculo também, testei com mais fotos que davão errado e sempre que passo pelo paint funciona... então como vou fazer para arrumar isso automaticamente? Pois o administrador não vai saber que tem que jogar no paint algumas fotos antes de enviar.

é isso obrigado pela ajuda

e tenho uma pergunta, bom quando a pessoa vai enviar a foto... se passar de 30 segundos carregando pra enviar da um erro, tem como eu aumentar esse tempo pois se a pessoa enviar uma foto de 2000 x 3000 vai demorar mais que 30 segundos pra enviar ....

Editado por Thiago M.
Link para o comentário
Compartilhar em outros sites

  • 0

usei uma imagem grande de 4mb para aparecer o erro aqui... e é o seguinte:

Fatal error: Maximum execution time of 30 seconds exceeded in C:\wamp\www\arte-em-flores\func.php on line 12

acredito que seja por tempo já que ele fala em time de 30seg

e minha linha 12 é essa: imagejpeg($nova, "$pasta/$name");

caso ajude...

bom o que devo fazer para resolver isso?

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,1k
    • Posts
      651,9k
×
×
  • Criar Novo...