Jump to content
Fórum Script Brasil
  • 0

Diminuir Tamanho da imagem ao carregar


Daniel Correia

Question

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 to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 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.

Edited by Willian Gustavo Veiga
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...