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

Diminuir Tamanho da imagem ao carregar


Daniel Correia

Pergunta

olá galera tenho uma sistema que carrega fotos e envia para o banco, mais se eu fizer um upload para o banco que tenha 4 mb, ela vai com 4mb, queria um script que ao enviar a foto ela diminuisse seu tamanho para que armazenasse no banco como por ex: quando eu fizer o upload de 4mb a foto armazenar no banco como uns 200kb;

o script é esse:

// Prepara a variavel caso o formulario tenha sido postado

$arquivo = isset($_FILES["foto"]) ? $_FILES["foto"] : FALSE;

$config = array();

// Tamano maximo da imagem, em bytes

$config["tamanho"] = 1024 * 1024 * 4;

// Largura Maxima, em pixels

$config["largura"] = 4500;

// Altura Maxima, em pixels

$config["altura"] = 4500;

// Diretorio onde a imagem sera salva

$config["diretorio"] = "arquivos/";

$grava_descricao = $_POST['descricao'];

$grava_link = $_POST['link'];

// Gera um nome para a imagem e verifica se já não existe, caso exista, gera outro nome e assim sucessivamente..

// Funcao Recursiva

function nome($extensao)

{

global $config;

// Gera um nome unico para a imagem

$temp = substr(md5(uniqid(time())), 0, 10);

$imagem_nome = $temp . "." . $extensao;

// Verifica se o arquivo já existe, caso positivo, chama essa funcao novamente

if(file_exists($config["diretorio/"] . $imagem_nome))

{

$imagem_nome = nome($extensao);

}

return $imagem_nome;

}

if($arquivo)

{

$erro = array();

if(!eregi("^image\/(pjpeg|jpeg|png|gif|bmp|jpg)$", $arquivo["type"]))

{

$erro[] = "Arquivo em formato invalido! A imagem deve ser jpg, jpeg, bmp, gif ou png. Envie outro arquivo";

}

else

{

// Verifica tamanho do arquivo

if($arquivo["size"] > $config["tamanho"])

{

$erro[] = "Arquivo em tamanho muito grande! A imagem deve ser de no maximo " . $config["tamanho"] . " bytes. Envie outro arquivo";

}

// Para verificar as dimensoes da imagem

$tamanhos = getimagesize($arquivo["tmp_name"]);

// Verifica largura

if($tamanhos[0] > $config["largura"])

{

$erro[] = "Largura da imagem não deve ultrapassar " . $config["largura"] . " pixels";

}

// Verifica altura

if($tamanhos[1] > $config["altura"])

{

$erro[] = "Altura da imagem não deve ultrapassar " . $config["altura"] . " pixels";

}

}

if(!sizeof($erro))

{

// Pega extensão do arquivo, o indice 1 do array conterá a extensão

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

// Gera nome único para a imagem

$imagem_nome = nome($ext[1]);

// Caminho de onde a imagem ficará

$imagem_dir = "../fotos/" . $imagem_nome;

// Faz o upload da imagem

move_uploaded_file($arquivo["tmp_name"], $imagem_dir);

//insere nome da imagem, descrição e link no banco e imagem para pasta fotos_anuncio.

$sql = mysql_query("INSERT INTO fotos (foto, descricao, link) VALUES ('$imagem_nome','$grava_descricao','$grava_link')");

header("Location: ../paginas/cadastrar_anuncio.php");

}

}

Obrigado!!!

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Nossa, como você quer diminuir a imagem... Se você conseguir, provavelmente ela vai perder a qualidade. Quais formatos de imagem você está utilizando?

O Google tem um formato de imagem próprio, eu lembro que ele compactava bem a imagem mas não sei se é tanto assim como você quer. Provavelmente esta ferramenta é executada na linha de comando, assim o PHP pode interagir com ela.

Um abraço.

Editado por Willian Gustavo Veiga
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,2k
    • Posts
      652k
×
×
  • Criar Novo...