Jump to content


Photo

Meu Codigo Não Gera Miniatura


  • Faça o login para participar
Nenhuma resposta neste tópico

#1 michelmfreitas

michelmfreitas

    ...

  • Usuários
  • 310 posts
  • Sexo:Não informado

Posted 23/01/2008, 14:20

Olá pessoal... tenho uma classe para fazer a inclusao de fotos e gerar miniaturas para as fotos...

A miniatura não está sendo redimensionada... ele vai com o tamanho total.... não diminui... porque?


[codebox] function Adicionar($nome, $categoria, $foto, $legenda){

preg_match("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $foto, $ext);

$foto_id = md5(uniqid(time()));

$foto_nome = $foto_id.".".$ext[1];

$foto_miniatura = "mini_".$foto_nome;

$diretorio = "../fotos/";

$arquivo = $diretorio.$foto_nome;

$miniatura = $diretorio.$foto_miniatura;

$arquivoDB = "fotos/".$foto_nome;

$miniaturaDB = "fotos/".$foto_miniatura;

$legenda = trocaAspas($legenda);

if (!copy($foto, $arquivo)) {
print "Erro ao copiar arquivo";
die();
}

if(!copy($foto, $miniatura)){
print "erro ao copiar miniatura";
die();
}

preg_match("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $arquivo, $ext);

if ($ext[1] == 'jpg' || $ext[1] == 'jpeg') {
$img_orig = imagecreatefromjpeg($arquivo);
}
if ($ext[1] == 'gif'){
$img_orig = imagecreatefromgif($arquivo);
}
if ($ext[1] == 'png'){
$img_orig = imagecreatefrompng($arquivo);
}

if(isset($img_orig)) {
//Tamanho da imagem
$width = imagesx($img_orig);
$height = imagesy($img_orig);

//Novo tamanho da imagem calculado pelo padrao e mantendo a proporo
$tamanhoArray = mantemProporcao($height, $width, 400, 325);
$img_width = $tamanhoArray[1];
$img_height = $tamanhoArray[0];
$img_padrao = imagecreatetruecolor($img_width, $img_height);

//Copia a imgem original para dentro
imagecopyresampled($img_padrao, $img_orig, 0, 0, 0, 0, $img_width+1, $img_height+1, $width, $height);

//Salva a imagem
unlink($arquivo);
$status = imagejpeg($img_padrao, $arquivo, 100);

//move_uploaded_file($status, $diretorio.$foto_nome)or die("erro movendo a img");;


}


if ($ext[1] == 'jpg' || $ext[1] == 'jpeg') {
$img_orig = imagecreatefromjpeg($miniatura);
}
if ($ext[1] == 'gif'){
$img_orig = imagecreatefromgif($miniatura);
}
if ($ext[1] == 'png'){
$img_orig = imagecreatefrompng($miniatura);
}

if(isset($img_orig)) {
//Tamanho da imagem
$width = imagesx($img_orig);
$height = imagesy($img_orig);

//Novo tamanho da imagem calculado pelo padrao e mantendo a proporcao
$tamanhoArray = mantemProporcao($height, $width, 100, 100);
$img_width = $tamanhoArray[1];
$img_height = $tamanhoArray[0];
$img_padrao = imagecreatetruecolor($img_width, $img_height);

//Copia a imagem original para dentro
imagecopyresampled($img_padrao, $img_orig, 0, 0, 0, 0, $img_width+1, $img_height+1, $width, $height);

//Salva a imgem
unlink($miniatura);
$status = imagejpeg($img_padrao, $miniatura, 100);

//Libera a memoria
imagedestroy($img_orig);
imagedestroy($img_padrao);

}

$erro = upload($foto, $foto_id, $diretorio, 400, 325) or die("Erro no upload.");
$erro1 = upload($foto, "mini_".$foto_id, $diretorio, 100, 100) or die("Erro no upload da miniatura.");
if(!$erro){
echo "erro no upload"; die();
}

if(!$erro1){
echo "erro no upload"; die();
}

$legenda = nl2br($legenda);

$sql = "INSERT INTO galeria (nome, categoria, foto, miniatura, legenda) VALUES ('$nome', '$categoria', '$arquivoDB', '$miniaturaDB', '$legenda');";
return $this-> DB->Execute($sql) or die($this->DB->ErrorMsg());

}[/codebox]

abaixo as duas funcoes utilizadas

[codebox]function mantemProporcao($height, $width, $height_padrao, $width_padrao) {

$scale = min($width_padrao/$width, $height_padrao/$height);

// Se a imagem maior que o permitido, encolhe ela!
if ($scale < 1) {

$tamanhoArray[0] = floor($scale * $height);
$tamanhoArray[1] = floor($scale * $width);
}

else {

$tamanhoArray[0] = $height;
$tamanhoArray[1] = $width;

}

return $tamanhoArray;
}



function upload($arquivo, $imagem_id, $diretorio, $width_padrao, $height_padrao) {

// Verifica se o mime-type do arquivo de imagem
if(!eregi("^image\/(pjpeg|jpeg|png|gif|jpg|JPG)$", $arquivo["type"])) {

$msgErro = "<font style='color: #CC0000';>ERRO:</font> Arquivo em formato invalido. A imagem deve ser jpg, jpeg, gif ou png.";
return $msgErro;

}

// Verificao de dados OK, nenhum erro ocorrido, executa ento o upload...
else {

// Pega extenso do arquivo
preg_match("/\.(gif|png|jpg|jpeg){1}$/i", $arquivo["name"], $ext);

// Gera um nome nico para a imagem seguido pela extenso
$imagem_nome = $imagem_id . "." . $ext[1];

// Caminho onde a imagem ficar
$imagem_dir = $diretorio.$imagem_nome;


/*
// **** REDIMENSIONAMENTO DA IMAGEM ****
*/

// Cria uma nova imagem
if ($arquivo["type"] == 'image/pjpeg' || $arquivo["type"] == 'image/jpeg') {
$img_orig = imagecreatefromjpeg($arquivo["tmp_name"]);
}
if ($arquivo["type"] == 'image/gif'){
$img_orig = imagecreatefromgif($arquivo["tmp_name"]);
}
if ($arquivo["type"] == 'image/x-png' || $arquivo["type"] == 'image/png'){
$img_orig = imagecreatefrompng($arquivo["tmp_name"]);
}

if(isset($img_orig)) {
//Tamanho da imagem
$width = imagesx($img_orig);
$height = imagesy($img_orig);

//Novo tamanho da imagem calculado pelo padrao e mantendo a proporo
$tamanhoArray = mantemProporcao($height, $width, $height_padrao, $width_padrao);
$img_width = $tamanhoArray[1];
$img_height = $tamanhoArray[0];
$img_padrao = imagecreatetruecolor($img_width, $img_height);

//Copia a imgem original para dentro
imagecopyresampled($img_padrao, $img_orig, 0, 0, 0, 0, $img_width+1, $img_height+1, $width, $height);

//Salva a imgem
$status = imagejpeg($img_padrao, $imagem_dir, 100);

//move_uploaded_file($status, $diretorio.$foto_nome)or die("erro movendo a img");;

//Libera a memria
imagedestroy($img_orig);
imagedestroy($img_padrao);

} else {

$msgErro = "<font style='color: #CC0000';>ERRO:</font> Falha no redimensionamento da foto. Tente novamente";
return $msgErro;

}
/*
**************************************
*/

// Retorna uma msg indicando 0 erros
return FALSE;

}

}[/codebox]

Podem me ajudar?

Edição feita por: savior, 23/01/2008, 20:53.

Michel Martins




0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq