Jump to content
Fórum Script Brasil
  • 0

(Resolvido) upload de imagens com thumb (pedido)


Ricardo T. do Prado

Question

Galera,

Alguém teria ai um script simples de upload de imagens com thumbs? Nunca precisei mexer com upload e agora me apareceu essa situação.

Gostaria de algo simples, se possível:

- as thumbs ficariam numa pasta thumb

- as imgs normais ficariam na pasta imgs

e salvasse o nome da imagem no banco.

Abs. e conto com a ajuda de todos!

Edited by Ricardo T. do Prado
Link to comment
Share on other sites

7 answers to this question

Recommended Posts

  • 0

Caro Willian Gustavo,

Com certeza procurei muito na internet, tanto que como não consegui nada para me satisfazer, tentei achar alguma coisa aqui.

Bom, tive que fazer o script na unha, peguei um exemplo de e fiz em cima do script o meu. Vou postar o código, pois, sei que esse upload vai ser bem útil para muitas pessoas, caso algum MODERADOR quiser move-lo para tutoriais ou repositório de scripts, acho que vai útil.

Vamos lá, esse script faz o seguinte

1 - Faz o upload da imagem para determinado diretório;

2 - A partir da imagem que foi upada, cria um thumbnail e coloca ele em outro diretório;

3 - Salva o nome do arquivo no banco de dados;

Obs. A thumb gerada é no estilo "ajuste" ou seja, a imagem não distorce para ficar em 100 x 100px.

Segue script.

upload.php

<?php
//scripts do upload e configs;

function create_thumbnail($source, $destination, $thumb_width) {

    $size = getimagesize($source);
    $width = $size[0];
    $height = $size[1];
    $x = 0;
    $y = 0;
    
    if($width > $height) {
        $x = ceil(($width - $height) / 2);
        $width = $height;
    }
    elseif ($height > $width) {
        $y = ceil (($height - $width) / 2);
        $height = $width;
    }
    $new_image = imagecreatetruecolor($thumb_width, $thumb_width) or die ('Não foi possível inicializar GD imagem stream');
    $extension = get_image_extension($source);
    if($extension == "jpg" || $extension == "jpeg") {
        $image = imagecreatefromjpeg($source);
    }
    if($extesion == "gif") {
        $image = imagecreatefromgif($source);
    }
    if($extension == "png") {
        $image = imagecreatefrompng($source);
    }
    imagecopyresampled($new_image, $image,0, 0, $x, $y, $thumb_width, $thumb_width, $width, $height);
    if($extension == "jpg" || $extension == "jpeg") {
        imagejpeg($new_image, $destination);
    }
    if($extesion == "gif") {
        imagegif($new_image, $destination);
    }
    if($extension == "png") {
        imagepng($new_image, $destination);
    }
    
} //fecha funcao


function get_image_extension($name) {
    $name = strtolower($name);
    $i = strrpos($name,".");
    if(!$i ) {return "";}
    $l = strlen($name) - $i;
    $extension = substr($name, $i+1,$l);
    return $extension;
}// fecha funcao get_image_extension

function randon_name($lenght) {
    $characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890";
    $name = "";
        for($i = 0; $i < $lenght; $i++) {
            $name.=$characters[mt_rand(0,strlen($characters) - 1)];
        }
    return "image-".$name;
}//fecha randon_name
?>

<form action="<? $_SERVER['PHP_SELF'] ?>" method="post"  enctype="multipart/form-data">
<input type="file" name="image"><br />
<input type="submit" name="post" value="OK"/>
</form>

<?
//configuracoes da imagem
    $image_location = "imoveisfotos/";
    $thumb_location = "imoveisfotos/thumbs/";
    
    $thumb_width = 100;
    $maximum_size = 5000000;
    
    $results = "Escolha uma imagem para ser enviada";
//fim configuracoes imagem


  if ($_POST['post']) { 
    if($_FILES['image']['name'] == "") {
        $results = "Você não postou uma image";
    }
    else {
        $size = filesize($_FILES['image']['tmp_name']);
        $filename = stripslashes($_FILES['image']['name']);
        $extension = get_image_extension($filename);
        if($size > $maximum_size) {
            $results = "Tamanho do arquivo maior que o permitido";
        }
        if(($extension != "jpg") && ($extension != "jpeg") && ($extension != "gif") && ($extension != "png")) {
            $results = "A imagem deve conter a extensao: JPG, JPEG, GIF ou PNG";
        }
    else {
        $image_randon_name = randon_name(15).".".$extension;
        $copy = @copy($_FILES['image']['tmp_name'],$image_location.$image_randon_name);
        if(!$copy) {
            $results = "Erro no carregamento do arquivo! Erro do sistema. Contate o administrador";
        }
    else {
        create_thumbnail($image_location.$image_randon_name,$thumb_location.$image_randon_name,$thumb_width);
        $results = "Carregamento concluído com sucesso!";
    }
    
        conexao(); // é uma função que conecta ao mysql que vem do include "funcoes.php";
        $sql = mysql_query("insert into imoveisfotos (id,idimovel,foto) values ('','".$id."','".$image_randon_name."')") or die (mysql_error());
        if(mysql_affected_rows) {
        echo "<script>alert('Imagem enviada com sucesso')</script>";
        }
}
}
}
  ?>

Qualquer dúvida, À disposição

Abs.

Link to comment
Share on other sites

  • 0

Grande MTavares,

Obrigado pelas palavras, realmente as vezes é uma busca perdida. Grato pela empatia.

Então, ele padroniza apenas os thumbnails em 100 x 100 ajustando o angulo da imagem para não distorcer. Quanto as imagens em tamanho reais ele não ajusta, mas, pode-se fazer isso ou, recopiar a função CREATE_THUMBNAIL e renomea-la ai você altera a propriedade width para o desejado e a chama.

Dúvidas, post it amigo.

Abs.

Link to comment
Share on other sites

  • 0

Ricardo,

fiz uns testes aqui no seu código e funcionou perfeitamente e sinceramente é um dos melhores em matéria de thumbnail, pois a imagem fica perfeita. Gostaria da sua permissão em para usá-lo em minhas aplicações e prometo salvar seus créditos como abaixo:

/*

SISTEMA DE THUMBNAIL DESENVOLVIDO POR RICARDO T. DO PRADO

E-mail: kao.prado@gmail.com

*/

Só fiz uma pequena alteração nessa linha, coloquei o retorno "window.location.href()", pois quando apertava o F5 ele recriava a imagem, veja:

echo "&lt;script>alert('Imagem enviada com sucesso');window.location.href='upload.php';</script>";

Eu tenho um sistema de thumbnail, mas não estou muito satisfeito com ele.

abraços e parabéns pelo código.

Edited by MTavares
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...