Problema Upload (Função imagecreatefromjpeg)
Ai pessoal. Peço uma forcinha aqui.
Somente "algumas" fotos em "algumas" resoluções de máquinas digitais dão problema.
Já testei em várias máquinas e as vezes funciona o upload, outras vezes o código faz o Upload, ou seja, envia o arquivo, mas a foto fica totalmente preta, e a mensagem dá o seguinte erro após o UPLOAD:
"OBS: O engraçado é que se você abre a foto no PAINT e salva ela novamente o código aceita o Upload"
Nesse link tem uma foto que bati e tem esse problema: www.floripaingleses.com.br/IMAG0003.JPG
ERRO APÓS UPLOAD:
Warning: imagecreatefromjpeg() [function.imagecreatefromjpeg]: '../fotos_empresas/cb80f91b204f60cf271f9e3c2d3771c5.JPG' is not a valid JPEG file in /home/floripa/public_html/area1/update_ftemp1.php on line 383
Warning: imagecreatefromjpeg() [function.imagecreatefromjpeg]: '../fotos_empresas/cb80f91b204f60cf271f9e3c2d3771c5.JPG' is not a valid JPEG file in /home/floripa/public_html/area1/update_ftemp1.php on line 384
Warning: imagesx(): supplied argument is not a valid Image resource in /home/floripa/public_html/area1/update_ftemp1.php on line 392
Warning: imagesx(): supplied argument is not a valid Image resource in /home/floripa/public_html/area1/update_ftemp1.php on line 393
... daí por diante...
O CÒDIGO È...........:
<?php
// ********************************************************************
// --------> INÍCIO DA VERIFICAÇÃO <---------
// ********************************************************************
// Adquire variáveis do campo
$foto_name = $_FILES['ftemp1']['name'];
$foto_arquivo = $_FILES['ftemp1'];
$original = $_FILES['ftemp1'];
$foto_tipo = $_FILES['ftemp1']['type'];
$foto_record = $row_rsBuscarUsuario['ftemp1_usu'];
$foto_msg = 'Foto Profissional 1 ';
$foto_campo = 'ftemp1_usu';
// Contador para criar link volta
$volta = 0;
// Recebe variável primária (ID)
$id_usu = $_POST['id_usu'];
// Verifica se o campo NOME esta preenchido
if (!empty($foto_name))
{
// Verifica se o mime-type do arquivo é de imagem
if(!eregi("^image/(pjpeg|jpeg|jpg|png|gif|bmp|PJPEG|JPEG|JPG|GIF|BMP|PNG)$", $foto_arquivo['type']))
{
echo "<br><br><center><b>O arquivo enviado não é uma imagem. Envie outro arquivo .jpg ou .gif !!</b></center>";
}
else
{
$arquivo_ft = isset($foto_arquivo) ? $foto_arquivo : FALSE;
preg_match("/\.(gif|bmp|png|jpg|jpeg|GIF|BMP|PNG|JPG|JPEG){1}$/i", $arquivo_ft["name"], $ext);
$extensao = $ext[1];
if ($extensao == "jpg" OR $extensao == "gif" OR $extensao == "JPG" OR $extensao == "GIF" OR $extensao
== "jpeg" OR $extensao == "JPEG")
{
// Variável conta qtas fotos foram em upload.
$num_fotos = 0;
// Diretório para onde o arquivo será movido
$diretorio = ".fotos_empresas/";
$dir = "../fotos_empresas/";
// Repassa path do campo Foto para variável
$nome_foto = $foto_record;
// Verifica se já existe foto no diretório
if ($nome_foto <> 'vazio')
{
// Se existe foto então EXCLUI a foto do diretório
unlink("../fotos_empresas/media_".$nome_foto);
unlink("../fotos_empresas/mini_".$nome_foto);
}
// Se não existe a foto então CADASTRA NOVA FOTO
$arquivo_ft = isset($foto_arquivo) ? $foto_arquivo : FALSE;
$nome_ft = str_replace(" ", "_", $arquivo_ft["name"]);
$nome_ft = strtolower($nome_ft);
$nome_ft = $diretorio . $nome_ft;
if (file_exists($nome_ft))
{
echo "Erro ao enviar aquivo - $foto_msg - (Error: Nome) - Envie novamente!";
exit;
}
preg_match("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $arquivo_ft["name"], $ext);
$imagem_nome_ft = md5(uniqid(time())) . "." . $ext[1];
$imagem_dir_ft = "../fotos_empresas/" . $imagem_nome_ft;
if (move_uploaded_file($arquivo_ft['tmp_name'], $imagem_dir_ft))
{
// Arquivo enviado com sucesso
$num_fotos = $num_fotos+1;
$est = $ext[1];
/* INÍCIO DA CRIAÇÃO DA MINIATURA
========================== */
/* Cria as miniaturas MINI e MEDIA =========================*/
// Imagem a ser aberta (800x600)
$imagem = $imagem_dir_ft;
// Define o tamanho das imagens
$tamanhos = getimagesize($imagem);
// Define o tamanho máximo da figura
$altura = $tamanhos[1];
$largura = $tamanhos[0];
$tamanho_maximo['largura'] = 220;
$tamanho_maximo['altura'] = 220;
// Qualidade da figura
$qualidade = 60;
// Tamanho da figura
$figura['largura'] = $largura;
$figura['altura'] = $altura;
// Se a figura for menor que o tamanho máximo na altura e na largura, ele não a aumenta
if($figura['largura'] < $tamanho_maximo['largura'] && $figura['altura'] < $tamanho_maximo['altura'])
{
$tamanho_maximo['largura'] = $figura['largura'];
$tamanho_maximo['altura'] = $figura['altura'];
}
// Define qual tamanho é maior, largura ou altura, para depois, calcular o tamanho certo
if($figura['largura'] > $figura['altura'])
{
$calculo = $figura['largura'] / $tamanho_maximo['largura'];
}
else
{
$calculo = $figura['altura'] / $tamanho_maximo['altura'];
}
$nova_figura_largura = $figura['largura'] / $calculo;
$nova_figura_altura = $figura['altura'] / $calculo;
$largura_mini = $nova_figura_largura * 45/100;
$altura_mini = $nova_figura_altura * 45/100;
$largura_media = $nova_figura_largura;
$altura_media = $nova_figura_altura;
// Cria o nome dos arquivos
$imagem_gerada_mini = explode(".", $imagem);
$imagem_gerada_mini = "mini_".$imagem_nome_ft;
$imagem_gerada_media = explode(".", $imagem);
$imagem_gerada_media = "media_".$imagem_nome_ft;
// Cria as novas imagens
if ($est == 'JPEG' or $est == 'jpeg' or $est == 'JPG' or $est == 'jpg' or $est == 'jpe' or $est == 'JPE' or
$est == 'jfif' or $est == 'JFIF' or $est == 'pjpeg' or $est == 'PJPEG')
{
$imagem_orig_mini = ImageCreateFromJPEG($imagem);
$imagem_orig_media = ImageCreateFromJPEG($imagem);
}
if ($est == 'GIF' OR $est == 'gif')
{
$imagem_orig_mini = ImageCreateFromGIF($imagem);
$imagem_orig_media = ImageCreateFromGIF($imagem);
}
// Pega largura da imagem original e define
$pontoX_mini = ImagesX($imagem_orig_mini);
$pontoX_media = ImagesX($imagem_orig_media);
// Pega altura da imagem original e define
$pontoY_mini = ImagesY($imagem_orig_mini);
$pontoY_media = ImagesY($imagem_orig_media);
// Cria os Thumbs
$imagem_fin_mini = ImageCreateTrueColor($largura_mini, $altura_mini);
$imagem_fin_media = ImageCreateTrueColor($largura_media, $altura_media);
// Copia as imagens originais para dentro
ImageCopyResampled($imagem_fin_mini, $imagem_orig_mini, 0, 0, 0, 0, $largura_mini+1,
$altura_mini+1, $pontoX_mini, $pontoY_mini);
ImageCopyResampled($imagem_fin_media, $imagem_orig_media, 0, 0, 0, 0, $largura_media+1,
$altura_media+1, $pontoX_media, $pontoY_media);
// Salva as imagens no diretorio definido ($dir)
if ($est == 'JPEG' OR $est == 'jpeg' OR $est == 'JPG' or $est == 'jpg')
{
ImageJPEG($imagem_fin_mini, "$dir/".$imagem_gerada_mini);
ImageJPEG($imagem_fin_media, "$dir/".$imagem_gerada_media);
}
if ($est == 'GIF' OR $est == 'gif')
{
ImageGIF($imagem_fin_mini, "$dir/".$imagem_gerada_mini);
ImageGIF($imagem_fin_media, "$dir/".$imagem_gerada_media);
}
// Libera a memória
ImageDestroy($imagem_orig_mini);
ImageDestroy($imagem_fin_mini);
ImageDestroy($imagem_orig_media);
ImageDestroy($imagem_fin_media);
/* Excluir a imagem original do diretório do site
==============================*/
unlink("../fotos_empresas/" . $imagem_nome_ft);
/* FIM DA CRIAÇÃO DA MINIATURA
======================== */
}
else
{
// Falha ao enviar arquivo
echo "Erro ao enviar o arquivo - $foto_msg !<p>";
}
// Mostra o número de arquivos enviados
echo "<br><br><center><b>Arquivos Enviados: " . $num_fotos . " <center><b><br>";
// Faz o UPDATE do Path da foto
$sql = "UPDATE usuario SET $foto_campo = '$imagem_nome_ft' WHERE id_usu = '$id_usu'";
// Executa sql
if (!@mysql_query($sql))
{
// Fallha ao cadastrar, existe algum erro
echo "<br><br><center>Problemas ao efetuar cadastro da FOTO.<br><br>";
exit();
}
else
{
// Cadastro obteve sucesso
echo "<br><br><center><b>FOTO ALTERADA COM SUCESSO !!</b></center>";
}
}
else
{
echo "<br><br><center><b>ATENÇÃO: Arquivo não enviado - A extensão deve ser .jpg ou .gif
</b></center>";
}
}
}
echo "<br><br><center><b>Clique em Voltar !!</b></center>";
?>
-----------------
Desde já agradeço a ajuda.
Discussão (10)
Carregando comentários...