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

Upload + Redimensionamento D Imagens


Ricardo Portolan

Pergunta

pessoal, olha só...

estou c/ umas duvidas, mas que a principio pra vocês é facil d c resolver...

na verdade sou meio amadador em php, por isso vou postar todo o codigo....

OBS.: o codigo funciona perfeitamente, mas gostaria d fazer algumas alteracoes mas não sei como eu faco, entaum segue o codigo:

CVEICULOS.PHP

-------------------

<?php

include ("cabecalho_restrito.php");

include ("conecta.php");

if (empty($veiculo)) {

echo ("

<font color=\"#FF0000\"><b>ERRO:</b></font> vêículo não pode estar em branco.<br><br>

<a href=\"cadastro_veiculos.php\">Voltar</a>

");

}

else {

if ($valor == "") {

$valor = "Consulte";

}

if ($foto_frontal != "") {

$foto_frontal = $_POST["foto_frontal"];

include ("upload_foto_frontal.php");

// DEFINE A IMAGEM DA QUAL SERÁ GERADA A MINIATURA

// Lembrar que essa imagem tem que estar no diretório do script...

// .. nenhum teste será feito para saber se ela existe

$imagem = "$gravar_foto_frontal"; // Tipo: JPG

// DEFINIR O NOME DO ARQUIVO PARA O THUMBNAIL

$thumbnailf = explode('.', $imagem);

$thumbnailf = $thumbnailf[0].".jpg";

// DEFINIR AS DIMENSÕES PARA O THUMBNAIL

$x = 400; // Largura

$y = 300; // Altura

include ("parteupload.php");

// SALVA O THUMBNAIL

ImageJPEG($img_final, $thumbnailf);

// LIBERA A MEMÓRIA

ImageDestroy($img_origem);

ImageDestroy($img_final);

}

$id = 0;

$sql = "insert into veiculos values ('$id', '$marca', '$veiculo', '$ano', '$combustivel', '$placa', '$cor', '$valor', '$opcionais', '$observacoes', '$thumbnailf')";

$resultado = mysql_query ($sql);

echo ("

<font color=\"#000066\"><b>$veiculo</b> cadastrado(a) com sucesso.<br><br>

<a href=\"cadastro_veiculos.php\">Voltar</a>

");

}

include ("rodape_restrito.php");

?>

PARTEUPLOAD.PHP

----------------------

<?php

// LÊ A IMAGEM DE ORIGEM

$img_origem = ImageCreateFromJPEG($imagem);

// PEGA AS DIMENSÕES DA IMAGEM DE ORIGEM

$origem_x = imagesx($img_origem); // Largura

$origem_y = imagesy($img_origem); // Altura

// ESCOLHE A LARGURA MAIOR E, BASEADO NELA, GERA A LARGURA MENOR

if($origem_x > $origem_y) { // Se a largura for maior que a altura

$final_x = $x; // A largura será a do thumbnail

$final_y = floor($x * $origem_y / $origem_x); // A altura é calculada

$f_x = 0; // Colar no x = 0

$f_y = round(($y / 2) - ($final_y / 2)); // Centralizar a imagem no meio y do thumbnail

}

else { // Se a altura for maior ou igual à largura

$final_x = floor($y * $origem_x / $origem_y); // Calcula a largura

$final_y = $y; // A altura será a do thumbnail

$f_x = round(($x / 2) - ($final_x / 2)); // Centraliza a imagem no meio x do thumbnail

$f_y = 0; // Colar no y = 0

}

// CRIA A IMAGEM FINAL PARA O THUMBNAIL

$img_final = imagecreatetruecolor($x,$y);

// COPIA A IMAGEM ORIGINAL PARA DENTRO DO THUMBNAIL

ImageCopyResized($img_final, $img_origem, $f_x, $f_y, 0, 0, $final_x, $final_y, $origem_x, $origem_y);

?>

UPLOAD_FOTO_FRONTAL.PHP

----------------------------------

<?php

$erro = $config = array();

// Prepara a variável do arquivo

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

// Tamanho máximo do arquivo (em bytes)

$config["tamanho"] = 10000000;

// Largura máxima (pixels)

$config["largura"] = 3500000;

// Altura máxima (pixels)

$config["altura"] = 1800000;

// Formulário postado... executa as ações

if ($arquivo) {

// Verifica se o mime-type do arquivo é de imagem

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

$erro[] = "Arquivo em formato inválido! 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 máximo " . $config["tamanho"] . " bytes. Envie outro arquivo";

}

// Para verificar as dimensões 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";

}

}

// Imprime as mensagens de erro

if (sizeof($erro)) {

foreach ($erro as $err) {

echo " - " . $err . "<BR>";

}

echo "<a href=\"foto.html\">Fazer Upload de Outra Imagem</a>";

}

// Verificação de dados OK, nenhum erro ocorrido, executa então o upload...

else {

// Pega extensão do arquivo

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

// Gera um nome único para a imagem

$imagem_nome = md5(uniqid(time())) . "." . $ext[1];

// Caminho de onde a imagem ficará

$gravar_foto_frontal = "carros/" . $imagem_nome;

// Faz o upload da imagem

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

}

}

?>

===================================

Bom, entaum relembrando, o codigo estah funcionando beleza, mas o detalhe é o seguinte...

utilizando esse codigo, eu preciso saber 3 coisas:

1) quando ele salva a imagem no servidor, ele ao invés d salvar com o nome da propria imagem, ele salva como c estivesse criptografada, e não c/ o nome real da imagem.

2) A imagem, quando salva, estah salvando c/ o fundo preto, só que na realidade não gostaria que aparecesse o fundo, tem como tira-lo?

3) Outro detalhe, quando eu removo do bco d dados o registro, a imagem continua lá, ou seja, ele só remove o comando, mas não a foto, como eu devo fazer p/ remove-lo?

Bom, por enquanto é isso, estou precisando saber meio urgente, desde já agradeco a todos vocês pela ajuda prestada ateh hj, e agradeco c puderem m quebrar esse galhaum também...

Abracos...

Ricardo Portolan...

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Respondendo...

1) o nome é muito usado assim, para evitar nomes iguais.

2) se o fundo da imagem era transparente, e a extensão era gif, quando diminuir, ela ficará preto mesmo, pelo que sei, acho que dá pra modificar, mais não lembro como que era :P

3) Se você remover pelo seu painel, você precisa adicionar a função unlink($foto); ( http://php.net/unlink ), agora, se remover pelo phpmyadmin, você terá que deletar a foto na mão pelo ftp, ou seu próprio gerenciador de arquivos.

thank'ss

Link para o comentário
Compartilhar em outros sites

  • 0

vlw BEOC...

mas e eu quiser que ele fike que o nome real dele, tipo, c a foto for "teste.jpg", ao chegar no servidor ele também fike c/ o meu nome, sem que criptografe, ou seja, fike "teste.jpg" no servidor também???

e outro detalhe, na verdade ele é .jpg e tem fundo, ou seja, não é transparente mas mesmo assim, ele coloka fundo preto?

grato novamente pela colaboracaum d todos....

---

abracos...

Ricardo Portolan,

Link para o comentário
Compartilhar em outros sites

  • 0

opa...

bom, como colcoar o nome nas imagens eu sei, mais o fundo, já não é ao meu alcance hehe, mais vou dar uma pesquisada.

no arquivo UPLOAD_FOTO_FRONTAL.PHP, você deve trocar no final a linha:

$imagem_nome = md5(uniqid(time())) . "." . $ext[1];
por:
$imagem_nome = $arquivo["name"]. ".".$ext[1];

thank'ss

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