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

Problema Com Imgcreatetruecolor


superkatatau

Pergunta

Olá Pessoal!

To fazendo uma inserção de imagens no banco com redimensionamento, mas está dando esses problemas:

Warning: Division by zero in C:\wamp\www\dream\adm\insere_foto.php on line 56

Warning: imagecreatetruecolor() [function.imagecreatetruecolor]: Invalid image dimensions in C:\wamp\www\dream\adm\insere_foto.php on line 60

Warning: imagecopyresampled(): supplied argument is not a valid Image resource in C:\wamp\www\dream\adm\insere_foto.php on line 62

Warning: imagejpeg(): supplied argument is not a valid Image resource in C:\wamp\www\dream\adm\insere_foto.php on line 63
Estou usando esse codigo
$foto = $_FILES["caminho_foto"]["name"];
$foto_tmp = $_FILES["caminho_foto"]["name_tmp"];


if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  $insertSQL = sprintf("INSERT INTO fotos (legenda_foto, data_foto, caminho_foto, caminho_mini) VALUES (%s, NOW(), '$foto', %s)",
                       GetSQLValueString($_POST['legenda_foto'], "text"),
                       GetSQLValueString($_POST['data_foto'], "text"),
                       GetSQLValueString($_POST['caminho_foto'], "text"),
                       GetSQLValueString($_POST['caminho_mini'], "text"));

function geraImg($img, $max_x, $max_y, $imgNome) {
    //pega o tamanho da imagem ($original_x, $original_y)
    list($width, $height) = getimagesize($img);
    $original_x = $width;
    $original_y = $height;
    // se a largura for maior que altura acho a porcentagem
    if($original_x > $original_y) {
       $porcentagem = (100 * $max_x) / $original_x;      
    }
    else {
       $porcentagem = (100 * $max_y) / $original_y;  
    }
    $tamanho_x = $original_x * ($porcentagem / 100);
    $tamanho_y = $original_y * ($porcentagem / 100);
    $image_p = imagecreatetruecolor($tamanho_x, $tamanho_y);
    $image = imagecreatefromjpeg($img);
    imagecopyresampled($image_p, $image, 0, 0, 0, 0, $tamanho_x, $tamanho_y, $width, $height);
    return imagejpeg($image_p, $imgNome, 100);
}

// Chama a imagem, passando os par?metros a ela.
geraImg($foto_tmp, 440, 360, "../fotos/".$foto);
                   

  mysql_select_db($database_con_fenasoja, $con_fenasoja);
  $Result1 = mysql_query($insertSQL, $con_fenasoja) or die(mysql_error());
}

TO usando o wamp server 1.6.4.

já alterei o php.ini na linha GD(tirei o ponto e virgula da frente)!

qualquer está dando errado!??

Abraço

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

O que está acontecendo é o que o Warning disse, oras:

Warning: Division by zero in C:\wamp\www\dream\adm\insere_foto.php on line 56

Está havendo uma divisão por zero, o que gera uma indeterminância. Logo, esse valor que está sendo usado nas outras funções com Warning não é um valor numérico válido e por isso causa os Avisos.

Dá uma olhada se $widht e $height estão com algum valor. Acho melhor você usar imagesy() e imagesx() ao invés de usar o list() com o getimagesize().

Link para o comentário
Compartilhar em outros sites

  • 0

Acredito que está dando divisão por zero por causa dessa linha:

list($width, $height) = getimagesize($img);

Note que você que o tamanho horizontal e vertical de uma variável chamada $img... mas essa variável não existe!!!

Uma solução, é ante de você colocar essa linha, colocar algo do tipo:

$img = $foto ou $foto_tmp (use o temporário se você não mover a foto antes de pegar o tamanho)

Link para o comentário
Compartilhar em outros sites

  • 0

Olha pessoal,

fiz todos os teste e o problema é que o $_file não está pegando a imagem. POr isso os problemas de divisão por zero.

Mas não consigo resolver isso!

Como pego essa foto realemente?

abraço

OUTRO PROBLEMA:

ATUALIZEI O CODIGO:

olha o codigo!

<?php

//configuração**************************
chmod ("c:\wamp\www\dream\fotos", 0777);
chmod ("..\mini", 0777);

//extensões
$limitar_ext = "não";

//caminho
$caminho_absoluto = "..\fotos";
$caminho_absoluto2 = "..\mini";

//se existir
$sobreescrever = "não";
//***************************************


set_time_limit(0);

$nome_arquivo = $_FILES['arquivo']['name'];
$tamanho_arquivo = $_FILES["arquivo"]['size'];
$arquivo_temporario = $_FILES['arquivo']['tmp_name'];
$imagem = $arquivo_temporario;

////**************************************


function geraImg($img, $max_x, $max_y, $imgNome) {

  //pega o tamanho
  $imagem_orig = imagecreatefromjpeg($img);
  $original_x = imagesx($imagem_orig);
  $original_y = imagesy($imagem_orig);
   
   
    // se a largura for maior que altura acho a porcentagem
    if($original_x > $original_y) {
       $porcentagem = (100 * $max_x) / $original_x;      
    }
    else {
       $porcentagem = (100 * $max_y) / $original_y;  
    }
    $tamanho_x = $original_x * ($porcentagem / 100);
    $tamanho_y = $original_y * ($porcentagem / 100);
    $image_p = imagecreatetruecolor($tamanho_x, $tamanho_y);
    $image = imagecreatefromjpeg($img);
    imagecopyresampled($image_p, $image, 0, 0, 0, 0, $tamanho_x, $tamanho_y, $width, $height);
    
    return imagejpeg($image_p, $imgNome , 80);
    
    
}

// Chama a imagem, passando os par?metros a ela.
geraImg($arquivo_temporario, 440, 360, $arquivo_temporario);



//////////////////***************************


if(!empty($arquivo_temporario))
{
    if($sobreescrever == "não" && file_exists("$caminho_absoluto/$nome_arquivo"))
     die("Este arquivo já existe! Mande outro!");
     
    if(move_uploaded_file($arquivo_temporario, "$caminho_absoluto/$nome_arquivo"))
    {
    echo "Arquivo Gravado com sucesso!";
    }  
    else
     echo "Arquivo não pode ser copiado!";
}
else
 die("Selecione um arquivo para enviar!");

?>

Tudo grava certo , o rezise também, mas a foto fica toda preta.

qualquer é isso?

abraço

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,8k
×
×
  • Criar Novo...