Jump to content


Photo

Script Que Faça O Upload De Imagem


  • Faça o login para participar
14 replies to this topic

#1 PaulinhoCurti

PaulinhoCurti

    Turista

  • Usuários
  • 36 posts
  • Sexo:Não informado
  • Localidade:São Paulo

Posted 11/09/2004, 15:03

Ae galera. Tenho um sistema de noticias em php com um formulario de postagem. Nesse formulario tem um script que pega uma imagem do campo do formulario e da upload para uma pasta do sistema mas em tamanho original. Queria um script que pegasse a imagem original, mudasse de tamanho e colocasse ela na pasta do servidor com o tamanho modificado e depois deletasse a original. Alguém pode me ajudar ???






------------------------------------------------------------------------------------------------
Editei o subtítulo de seu tópico, não use caixa alta nos títulos nem nos subtítulos.

Edição feita por: Crab, 11/09/2004, 18:36.


#2 Felipe Pena

Felipe Pena

    O temor do Senhor é o princípio da sabedoria

  • Ex-Admins
  • 6441 posts
  • Sexo:Masculino

Posted 11/09/2004, 15:06

Na subseção Tutoriais tem o que queres.....
Dê uma olhada lá.. ;)
Felipe Pena
[...] ó terra, terra, terra; ouve a palavra do Senhor. — Jeremias 22:29

#3 PaulinhoCurti

PaulinhoCurti

    Turista

  • Usuários
  • 36 posts
  • Sexo:Não informado
  • Localidade:São Paulo

Posted 11/09/2004, 15:09

cola aqui no forum o codigo que eu só adiciono no meu script.. só preciso do que pega a imagem e modifica o tamanho antes de por na pasta. o que da upload eu já tenho funcionando.

ABRAÇÃO

#4 Felipe Pena

Felipe Pena

    O temor do Senhor é o princípio da sabedoria

  • Ex-Admins
  • 6441 posts
  • Sexo:Masculino

Posted 11/09/2004, 15:16

Pegando do tutorial do thiagorsl...

PHP
<?
//Pegando do campo arquivo do FORM...
$img_form = $_FILES['arquivo']['tmp_name'];

$imagem= $img_form;//aqui a url da imagem que sera criada a miniatura

header("Content-type: image/jpeg");// Cabeçalho do Script para informar o tipo da imagem lembrando que se for gerar uma imagem ig vc tem que mudar o cabeçalho isso serve para qualquer tipo de imagem

$im = imagecreatefromjpeg($imagem); //criar uma amostra da imagem original

$largurao = imagesx($im);// pegar a largura da amostra

$alturao = imagesy($im);// pegar a altura da amostra

$alturad = 50; // definir a altura da miniatura em px

$largurad = ($largurao*$alturad)/$alturao;// calcula a largura da imagem a partir da

//altura da miniatura
$nova = imagecreatetruecolor($largurad,$alturad);//criar uma imagem em branco

imagecopyresized($nova,$im,0,0,0,0,$largurad,$alturad,$largurao,$alturao);//copiar

//sobre a imagem em branco a amostra diminuindo conforma as especificações da miniatura
$img_form = imagejpeg($nova);//cria imagem jpeg

//SALVANDO...
move_uploaded_file($_FILES['arquivo']['tmp_name'], "pasta/".$img_form);

imagedestroy($nova);//libera a memoria usada na miniatura

imagedestroy($im);//libera a memoria usada na amostra
?>


Testa isso ae..
Felipe Pena
[...] ó terra, terra, terra; ouve a palavra do Senhor. — Jeremias 22:29

#5 diegocoralnet

diegocoralnet

    Turista

  • Usuários
  • 50 posts
  • Sexo:Não informado

Posted 11/09/2004, 15:21

tipo, na pagina de vêr as notícias deve ta o código assim: <? echo "$foto"; ?> ai voce faz assim: <? echo "<img src=$foto width=200 height=100> ?>

width = largura / height = tamanho

obs: sem colocar aspas mesmos, não precisa.

#6 thiagorsl

thiagorsl

    Ex-admin xD

  • Ex-Admins
  • 1151 posts
  • Sexo:Não informado
  • Localidade:Sampa
  • Interesses:http://sermaldito.amovoce.net/

Posted 11/09/2004, 15:28

tipo, na pagina de vêr as notícias deve ta o código assim: <? echo "$foto"; ?> ai voce faz assim: <? echo "<img src=$foto width=200 height=100> ?>

width = largura / height = tamanho

obs: sem colocar aspas mesmos, não precisa.

Isso não adianta em nada .... pois vai daro o mesmo carregamento em KB da imagem grande diminuir somente para exibir é preju ¬¬

Dei que dar uma modificados no meu script para que ele crie um figura e não mostre ela ......

PHP
<?
//Pegando do campo arquivo do FORM...
$img_form = $_FILES['arquivo']['tmp_name'];
$caminho="pasta/$img_form";
$imagem= $img_form;//aqui a url da imagem que sera criada a miniatura

$im = imagecreatefromjpeg($imagem); //criar uma amostra da imagem original
$largurao = imagesx($im);// pegar a largura da amostra
$alturao = imagesy($im);// pegar a altura da amostra
$alturad = 50; // definir a altura da miniatura em px
$largurad = ($largurao*$alturad)/$alturao;// calcula a largura da imagem a partir da
//altura da miniatura
$nova = imagecreatetruecolor($largurad,$alturad);//criar uma imagem em branco
imagecopyresampled($nova,$im,0,0,0,0,$largurad,$alturad,$largurao,$alturao);//copiar
//sobre a imagem em branco a amostra diminuindo conforma as especificações da miniatura
$img_form = imagejpeg($nova,$caminho);//cria imagem jpeg

//SALVANDO...
move_uploaded_file($_FILES['arquivo']['tmp_name'], "pasta/".$img_form);

imagedestroy($nova);//libera a memoria usada na miniatura

imagedestroy($im);//libera a memoria usada na amostra
?>


#7 PaulinhoCurti

PaulinhoCurti

    Turista

  • Usuários
  • 36 posts
  • Sexo:Não informado
  • Localidade:São Paulo

Posted 11/09/2004, 15:37

é assim. eu pego uma imagem do meu pc e dou o upload no campo de upload de formulario. ai o sistema pega essa imagem e da o resize e arquiva ela na pasta do server já com o tamanho modificado.

#8 Felipe Pena

Felipe Pena

    O temor do Senhor é o princípio da sabedoria

  • Ex-Admins
  • 6441 posts
  • Sexo:Masculino

Posted 11/09/2004, 15:44

Testa ae velho...

PHP
<?

if (isset($_POST['s'])){

//Caminho de onde ficará a imagem
$caminho = "imgs/"; //deixe a barra no final

//Pegando do campo arquivo do FORM...
$img_form = $_FILES['arquivo']['tmp_name'];

$imagem= $img_form;//aqui a url da imagem que sera criada a miniatura

header("Content-type: image/jpeg");// Cabeçalho do Script para informar o tipo da imagem lembrando que se for gerar uma imagem ig vc tem que mudar o cabeçalho isso serve para qualquer tipo de imagem

$im = imagecreatefromjpeg($imagem); //criar uma amostra da imagem original

$largurao = imagesx($im);// pegar a largura da amostra

$alturao = imagesy($im);// pegar a altura da amostra

$alturad = 50; // definir a altura da miniatura em px

$largurad = ($largurao*$alturad)/$alturao;// calcula a largura da imagem a partir da

//altura da miniatura
$nova = imagecreatetruecolor($largurad,$alturad);//criar uma imagem em branco

imagecopyresized($nova,$im,0,0,0,0,$largurad,$alturad,$largurao,$alturao);//copiar

//sobre a imagem em branco a amostra diminuindo conforma as especificações da miniatura
$img_thumb = imagejpeg($nova);//cria imagem jpeg

//SALVANDO...
move_uploaded_file($_FILES['arquivo']['tmp_name'], $caminho.$img_thumb);

imagedestroy($nova);//libera a memoria usada na miniatura

imagedestroy($im);//libera a memoria usada na amostra

//exibindo imagem...
echo '<img src="'.$caminho.$img_form.'">';

}
else {

echo
'<form method="post" action="'.$PHP_SELF.' enctype="multipart/form-data">
Imagem: <input type="file" name="arquivo">
<input type="submit" name="s" value=" ENVIAR ">
<form>'
;

}
?>


Teste ae..... :mellow:
Felipe Pena
[...] ó terra, terra, terra; ouve a palavra do Senhor. — Jeremias 22:29

#9 PaulinhoCurti

PaulinhoCurti

    Turista

  • Usuários
  • 36 posts
  • Sexo:Não informado
  • Localidade:São Paulo

Posted 11/09/2004, 15:47

ALGUÉM PODE FAZER A CARIDADE DE APLICAR ISSO NO MEU CÓDIGO ?? Eu tentei de todas as maneiras e não funcionou. Abaixo segue meu código:

<?php

$pasta = "../imagens"; // Coloque o caminho da pasta ex: /imagens/usuarios

include("../versao.inc"); 
include("verifica.php"); ?>
<html>
<head>
  <title>Adicionar Noticia CAJAMAR NET</title>
<LINK href="adiminsupernews.css" type="text/css" rel="stylesheet">
<LINK href="../../java/format.css" type="text/css" rel="stylesheet">
<script> 
  function ValidaFormulario () {

  if (document.formulario.categoria.value==""){ 
  alert("Selecione a cidade que essa noticia pertence no campo CATEGORIA!"); 
  document.formulario.categoria.focus(); 
	return false;
	}
  if (document.formulario.titulo.value==""){ 
  alert("Coloque o TITULO da notícia a ser publicada!"); 
  document.formulario.titulo.focus(); 
	return false;
	}
  if (document.formulario.conteudo.value==""){ 
  alert("É Óbvio que o CONTEÚDO da notícia a ser postada é obrigatório!"); 
  document.formulario.conteudo.focus(); 
  return false;
	}
  
	return true;
}
// -->

</script>

<script language="JavaScript">
//redirecionamento de páginas
redirTime = "3000"; //Tempo
redirURL = "regional_adicionar.php";  //url
function redirTimer(){
self.setTimeout("self.location.href = redirURL;",redirTime);}
</script>
</head>
<?php //Se a variavel envia for setada
if(isset($_POST['envia'])):
require("../conexao.inc");
echo("<body onLoad=\"redirTimer()\">");
echo("<font face=\"Verdana,Arial,Helvetica,sans-serif\" size=\"2\" color=\"#000000\">");

//Conecta-se ao mysql
$conexao = @mysql_connect($host, $user, $pass);
if(!$conexao){
die("Impossível conectar-se ao mysql...<br>");
}

//Seleciona o banco de dados
if(! @mysql_select_db($db_super_news)){
die("Impossível conectar-se com o banco de dados: " . $db_super_news . '<br>');
}

//Se a notícia for submetida
//Adicina ao banco de dados regionalnews
if(isset($_POST['envia'])){
$titulo = $_POST['titulo'];
$fonte = $_POST['fonte'];
$email = $_POST['email'];
$conteudo = $_POST['conteudo'];
$categoria = $_POST['categoria'];
$imagem_nome = $_FILES["imagem"]["name"];
$imagem_temp = $_FILES["imagem"]["tmp_name"];
$envia_imagem= @move_uploaded_file($imagem_temp,$pasta."/".$imagem_nome);
$sql = "INSERT INTO regionalnews SET
       ID='$id',
       titulo='$titulo',
    fonte='$fonte',
    email='$email',
       conteudo='$conteudo',
    categoria='$categoria',
    imagem_nome='$imagem_nome',
    imagem_temp='$imagem_temp',
       data=CURDATE(),
       tempo=CURTIME()";
if(@mysql_query($sql)){
echo("<p align=\"center\"><font color=\"#FF0000\" size=\"2\">A not&iacute;cia foi adicionada com sucesso!
      <br>Voc&ecirc; est&aacute; sendo redirecionado para o
      formulario para postagem de outra noticia</font></p>");
} else {
echo("<p align=\"center\"><font color=\"#FF0000\" size=\"2\">Erro ao adicionar a not&iacute;cia " . mysql_error() . '</font></p><br>');
echo(!$envia_imagem)?"Erro ao enviar a Imagem para o Servidor!<br>":"";
}
}
echo("</body></html>");
?>
<?php
else: //Se a variavel envia não for setada
?>
<body background="../../layout/fundo_pagina.gif">

Edição feita por: PaulinhoCurti, 11/09/2004, 15:50.


#10 Felipe Pena

Felipe Pena

    O temor do Senhor é o princípio da sabedoria

  • Ex-Admins
  • 6441 posts
  • Sexo:Masculino

Posted 11/09/2004, 15:56

Primeiro testa o código que te passei...
ou seja... o lance da imagem isolado...

Depois passa para o arquivo do form..

Qual o erro que deu??
Felipe Pena
[...] ó terra, terra, terra; ouve a palavra do Senhor. — Jeremias 22:29

#11 PaulinhoCurti

PaulinhoCurti

    Turista

  • Usuários
  • 36 posts
  • Sexo:Não informado
  • Localidade:São Paulo

Posted 11/09/2004, 16:00

Eu não sei como proceder. Eu já tenho o meu formulário de postagem. O codigo que eu dei é do meu form. Só preciso colocar o seu codigo no meio entende ? Como eu agrego os 2 ?

#12 Felipe Pena

Felipe Pena

    O temor do Senhor é o princípio da sabedoria

  • Ex-Admins
  • 6441 posts
  • Sexo:Masculino

Posted 11/09/2004, 16:04

Primeiro testa o meu código.....

Pega ele e salva num .php e vê se funciona...
Coloca o caminho da pasta no $caminho.

Vê ae se funciona.....
Daí se funcionar eu passo pro teu form... ;)
Felipe Pena
[...] ó terra, terra, terra; ouve a palavra do Senhor. — Jeremias 22:29

#13 PaulinhoCurti

PaulinhoCurti

    Turista

  • Usuários
  • 36 posts
  • Sexo:Não informado
  • Localidade:São Paulo

Posted 11/09/2004, 16:11

NÃO FUNCIONOU.

Mandou a imagem para a pasta sem a extensão .jpg
Gravou na pasta a imagem com o tamanho original.
Depois de enviado a imagem voltou uma tela exibindo a miniatura (COISA DESNECESSÁRIA)

#14 Felipe Pena

Felipe Pena

    O temor do Senhor é o princípio da sabedoria

  • Ex-Admins
  • 6441 posts
  • Sexo:Masculino

Posted 11/09/2004, 17:52

Pronto rapaz...

Cria uma pasta com nome de img aonde ficar esse arquivo..

<?php
//Se a variavel envia for setada
if(isset($_POST['envia'])):

require("../conexao.inc");

echo("<body onLoad=\"redirTimer()\">");
echo("<font face=\"Verdana,Arial,Helvetica,sans-serif\" size=\"2\" color=\"#000000\">");

//Conecta-se ao mysql
mysql_connect($host, $user, $pass) or die ("Impossível conectar-se ao mysql...<br>");

//Seleciona o banco de dados
mysql_select_db($db_super_news) or die("Impossível conectar-se com o banco de dados: " . $db_super_news . "<br>");

$titulo = $_POST['titulo'];
$fonte = $_POST['fonte'];
$email = $_POST['email'];
$conteudo = $_POST['conteudo'];
$categoria = $_POST['categoria'];

$imagem_nome = $_FILES["imagem"]["name"];
$imagem_temp = $_FILES["imagem"]["tmp_name"];

$caminho="img/$imagem_temp";
$imagem= $imagem_temp;//aqui a url da imagem que sera criada a miniatura

$im = imagecreatefromjpeg($imagem); //criar uma amostra da imagem original
$largurao = imagesx($im);// pegar a largura da amostra
$alturao = imagesy($im);// pegar a altura da amostra
$alturad = 50; // definir a altura da miniatura em px
$largurad = ($largurao*$alturad)/$alturao;// calcula a largura da imagem a partir da
//altura da miniatura
$nova = imagecreatetruecolor($largurad,$alturad);//criar uma imagem em branco
imagecopyresampled($nova,$im,0,0,0,0,$largurad,$alturad,$largurao,$alturao);//copiar
//sobre a imagem em branco a amostra diminuindo conforma as especificações da miniatura
$img_form = imagejpeg($nova, $caminho);//cria imagem jpeg

//SALVANDO...
move_uploaded_file($img_form, $caminho);

imagedestroy($nova);//libera a memoria usada na miniatura
imagedestroy($im);//libera a memoria usada na amostra

$sql = mysql_query("INSERT INTO regionalnews (titulo,fonte,email,conteudo,categoria,imagem_nome,imagem_temp,data,tempo) VALUES ('$titulo','$fonte','$email','$conteudo','$categoria','$imagem_nome','$imagem_temp',CURDATE(),CURTIME())");

if (mysql_query($sql)){
echo("<p align=\"center\"><font color=\"#FF0000\" size=\"2\">A not&iacute;cia foi adicionada com sucesso!
    <br>Voc&ecirc; est&aacute; sendo redirecionado para o
    formulario para postagem de outra noticia</font></p>");
} else {
echo("<p align=\"center\"><font color=\"#FF0000\" size=\"2\">Erro ao adicionar a not&iacute;cia " . mysql_error() . '</font></p><br>');
echo(!$envia_imagem)?"Erro ao enviar a Imagem para o Servidor!<br>":"";

}
}

echo("</body></html>");
?>


Felipe Pena
[...] ó terra, terra, terra; ouve a palavra do Senhor. — Jeremias 22:29

#15 Crab

Crab

    Da paz, mas preparado para Guerra

  • Ex-Admins
  • 2521 posts
  • Sexo:Masculino
  • Localidade:Florianópolis - SC
  • Interesses:Desenvolvimento Gráfico e Web.

Posted 11/09/2004, 18:19

Aí não sou muito bom nisso mas tenho uma parada aqui que envia e redimensiona em escala e compacta a qualidade tbm, digamos que vc pode definir entre 0 e 100 a qualidade do JPG.

O único problema que só envia JPG ou JPEG, mas isso acho que é fácil vc alterar.
E outro tbm é que não acessa a BD, mas tbm acho que não será dificil adaptar para quem saca mais de PHP.

Se vc não quiser usar ele completo, pode tentar aproveitar apenas o que for necessário.

Enfim aproveite o que der se não der ... paciÊncia.

Este script abaixo faz tudo sózinho, só não lista, mas isso é simples e tem aqui no fórum a dar com pau.


upload.php

PHP


<html>
<head>
<title>Enviando - Redimencionando - Compactando</title>
    
<form action="<?=$SCRIPT_NAME; ?>" method="POST" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="2000000">
<p>Imagem para Enviar:<br>
<input name="imgfile" type="file" size="35"><br>
<font size="1">(escolha uma imagem em seu computador )</font><br><br>
<input type="submit" value="Enviar a  Imagem">
</form>

</body></html>

<? function getFileExtension($str) {

        $i = strrpos($str,".");
        if (!$i) { return ""; }

        $l = strlen($str) - $i;
        $ext = substr($str,$i+1,$l);

        return $ext;

    }
?>
<?

if ($REQUEST_METHOD == "POST")
{

  
    $uploaddir
= "./imagens";
    
    $pext
= getFileExtension($imgfile_name);
    $pext = strtolower($pext);
    if (($pext != "jpg")  && ($pext != "jpeg"))
    {

       print "<h1>ERRO</h1>Tipo de arquivo não permitido.<br>";
       print "<p>Por favor envie somente imagens com extenção .jpg ou .jpeg.<br><br>";
        print "O arquivo enviado tem a seguinte extenção: $pext</p>\n";

                unlink($imgfile);
        exit();
    }

    
/* abaixo ele vai pegar a imagem e se for maior em dimensão que os
valores que defini ele redimensiona na escala para não estourar a imagem baseando-se no menor valor. Vc pode definir o valor que quiser */


        $imgsize = GetImageSize($imgfile);

    if (($imgsize[0] > 340) || ($imgsize[1] > 255))
    {
                $tmpimg = tempnam("c:/Windows/Temp");

                system("djpeg $imgfile >$tmpimg");
        
// -qual 60 -> qualidade da compactação, podendo ser alterado tbm.

                system("pnmscale -xy 340 255 $tmpimg | cjpeg -smoo 0 -qual 60 >$imgfile");
        
                unlink
($tmpimg);
        
    
}
    
    $final_filename
= str_replace(" ", "_", $imgfile_name);
    $newfile = $uploaddir . "/$final_filename";

    
    
    
        if
(is_uploaded_file($imgfile))
    {

            if (!copy($imgfile,"$newfile"))
       {
                  
        
print "Erro Enviando Arquivo.";
          exit();
       }
     }

    unlink($imgfile);
    
    print
("<img src='./imagens/$final_filename' ");

}
?>



Cara não se se isso ajuda mas tenta aí.

(y)Até Mais :)




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq