Upload de imagens com redimensionamento

Publicado por Perfil removido (última atualização em 14/02/2014)

[ Hits: 17.717 ]

Download envio.zip




O script abaixo é composto de duas partes: um formulário, por onde você envia o arquivo e o trecho em que o servidor recebe a imagem e a redimensiona.

Para que funcione perfeitamente, é necessária a instalação, caso o servidor seja GNU/Linux, da biblioteca GD do PHP. A parte do redirecionamento peguei de um desenvolvedor que criou uma classe responsável apenas pelo redirecionamento da imagem (link: http://www.jarrodoberto.com/articles/2011/09/image-resizing-made-easy-with-php ). O restante, (upload, criação de formulário) foram adaptados para este exemplo.

Caso tenha sido útil, não deixe de postar seu comentário!

  



Esconder código-fonte

<?php
/*
 * Para maiores informações da classe resize2.php, visite o site: http://www.jarrodoberto.com/articles/2011/09/image-resizing-made-easy-with-php
 * Este é o site do autor do script resize2.php
 * */

if(isset($_POST['gravar']) && isset($_FILES['imagem'])){
    $imagem = $_FILES['imagem']['name']; // Nome originai da imagem


    $dir = "imagens"; // Diretório das imagens

    $salva = $dir."/".$imagem; // Caminho onde vai ficar a imagem no servidor

    move_uploaded_file($_FILES['imagem']['tmp_name'],$salva ); // Este comando move o arquivo do diretório temporário para o caminho especificado acima


    $info_imagem = pathinfo($salva); // Resgatando extensão do arquivo recém-baixado

    $nova_imagem = time().rand(1000,5000).".".$info_imagem['extension']; // Nome da imagem redimensionada

    // *** Include the class
    // ESte arquivo está no arquivo ZIPADO do artigo
    require_once "resize2.php";

    // *** 1) Initialise / load image
    $resizeObj = new resize($salva);

    // *** 2) Resize image (options: exact, portrait, landscape, auto, crop)
    $resizeObj -> resizeImage(200, 200, 'crop');
    /* Especificando que a nova imagem terá 200 px de largura e altura. E utilizando a opção CROP, que é considerada a melhor
    pois, recorta a imagem na medida sem distorção
    Se quizer ver outras opções, visite o site do desenvolvedor de resize2.php (http://www.jarrodoberto.com/articles/2011/09/image-resizing-made-easy-with-php)

    */

    // *** 3) Save image
    $resizeObj -> saveImage($dir."/".$nova_imagem, 100);

    // O arquivo-base é removido
    unlink($salva);


    // Exibindo mensagem, se tudo correu bem
    echo "UPLOAD REALIZADA COM SUCESSO";

}
?>
<html>
    <head>
        <title>Upload com redimensionamento</title>
    </head>
    <body>
        <form action="teste.php" method="post" enctype="multipart/form-data">
            <input type="file" name="imagem" id="imagem" />
            <input type="submit" name="gravar" value="Gravar" id="gravar" />

        </form>
    </body>
</html>

Scripts recomendados

source-highlight

Busca por palavra dentro de arquivos

Cadastro automatico

Gerar código de barras com barcode + PHP

Gerando vários arquivos com PHP usando MPDF


  

Comentários
[1] Comentário enviado por maloqueiro em 14/02/2014 - 15:45h

valeu

[2] Comentário enviado por sixTolak em 14/04/2017 - 22:55h

Ótimo código ao autor desse tópico que se encontra com perfil indisponível.

Para o pessoal que precisa do mesmo script para postagem com banco de dados:

$resizeObj -> saveImage($dir."/".$nova_imagem, 100);
//renderiza e salva
$salvamento = ($dir."/".$nova_imagem);
//variavel para upload
// // O arquivo-base é removido
unlink($salva);

código para upload:
//faço com bindParam, aprendi assim.

$sql = $con->prepare('insert into tabela(nomeTabela) values'
. ' (?)');
$sql->bindParam(1, salvamento );
//aqui no bindParam é como uma inserção por nome de tabela, porém cuidando da ordenação, se vc por nomeTabela como 2 e tiver outro campo, não irá funcionar, tem que ser de acordo com a ordenação definida no $sql = $con->prepare('insert into blablabla') values(?);

Espero ter ajudado quem se encontra na mesma situação na qual me encontrei, forte abraço!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts