Foros del Web » Programando para Internet » PHP »

como subir una imagen a mi servidor, guardar la URL en mi bd y reducir img 600x400

Estas en el tema de como subir una imagen a mi servidor, guardar la URL en mi bd y reducir img 600x400 en el foro de PHP en Foros del Web. hola amigos ando buscando un código php para poder subir mediante un formulario una imagen al servidor, guardar la URL de la imagen y al ...
  #1 (permalink)  
Antiguo 30/07/2010, 09:47
 
Fecha de Ingreso: febrero-2009
Mensajes: 489
Antigüedad: 15 años, 2 meses
Puntos: 8
como subir una imagen a mi servidor, guardar la URL en mi bd y reducir img 600x400

hola amigos
ando buscando un código php para poder subir mediante un formulario una imagen al servidor, guardar la URL de la imagen y al guarda la imagen que esta qde con el tamaño fijo aprox 600x400 y guardarla como otro nombre al original?

como debo empezar?
__________________
sitios
www.avisoya.com
www.yavendi.com
  #2 (permalink)  
Antiguo 30/07/2010, 10:15
Avatar de Panicav  
Fecha de Ingreso: diciembre-2007
Ubicación: Rosario, Santa Fe - Argentina.
Mensajes: 135
Antigüedad: 16 años, 3 meses
Puntos: 8
Respuesta: como subir una imagen a mi servidor, guardar la URL en mi bd y reducir im

Código PHP:

$img_01 
$_FILES[img]['name'];
    switch(
true) { case ($img_01!=""):
ini_set('memory_limit''128M'); 
          
$status ""
          
$tamano $_FILES[img]['size']; 
          
$tipo $_FILES[img]['type']; 
          
$archivo $_FILES[img]['name']; 
          
$prefijo substr(md5(uniqid(rand())),0,21);    
            
#guardamos el archivo a la carpeta
($tipo == "image/jpeg" || $tipo == "image/pjpeg"|| $tipo == "image/jpg") or die (mysql_error());
              
$destino =  "_temp/".$prefijo.".jpg"
            (
copy($_FILES[img]['tmp_name'],$destino)) or die (mysql_error()); 
              
$status $prefijo.".jpg"
              
$prop $propiedad;
#aca empieza el codigo de creacion de la Miniatura *************************************************************
          
list($ancho$altura$tipo$atr) = getimagesize("_temp/$status");
          
$source=$destino# archivo de origen 
          
$dest="img/".$prefijo.".jpg"#archivo de destino 
          
$height_d=((600/$ancho)*$altura); #alto de salida 
          
$width_d=600# ancho de salida 
          
list($width_s$height_s$type$attr) = getimagesize($source$info2); #obtengo información del archivo  
          
$gd_s imagecreatefromjpeg($source); #crea el recurso gd para el origen 
          
$gd_d imagecreatetruecolor($width_d$height_d); #crea el recurso gd para la salida 
            
imagecopyresampled($gd_d$gd_s0000$width_d$height_d$width_s$height_s); #redimensiona 
            
imagejpeg($gd_d$dest); #graba 
        
imagedestroy($gd_s); #libreo recursos
        
imagedestroy($gd_d); 
        
unlink("_temp/$status"); 

Analiza un poco el código, tomate el trabajo, fijate que $status es el nombre de tu archivo sin la extención, y lo que hacemos colocamos la imegen original en una carpeta "_temp" y luego de alli recorta proporcionalmente y guarda en una carpeta llamada "img", son necesarias estas carpetas para que trabaje tu código, mete mano es sensillo pero intentalo comprender así sabes como aplicarlo mejor a tus necesidades.
  #3 (permalink)  
Antiguo 30/07/2010, 10:28
 
Fecha de Ingreso: febrero-2009
Mensajes: 489
Antigüedad: 15 años, 2 meses
Puntos: 8
ok voy a intentalo comprender vamos trabajar gracias por tu pronta respuesta

hola amigos una duda
tengo una carpeta llamada /fotos y hay imágenes de diferentes tamaños como puedo hacer una miniaturas de ellas al momento de hacer el llamo utilizado la url guardada en la bd.

estoy se podra hacer? como
__________________
sitios
www.avisoya.com
www.yavendi.com

Última edición por GatorV; 30/07/2010 a las 22:08
  #4 (permalink)  
Antiguo 30/07/2010, 17:11
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: como hacer miniaturas de imagenes en carpeta

Google: miniaturas con php
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 30/07/2010, 18:07
 
Fecha de Ingreso: febrero-2009
Mensajes: 489
Antigüedad: 15 años, 2 meses
Puntos: 8
hola amigos encontre este codigo

Código PHP:
<?php

// Simple Thumb Gen
// Por Alex para WebTaller.com

$original imagecreatefromjpeg("original.jpg");
$thumb imagecreatetruecolor(150,150); // Lo haremos de un tamaño 150x150

$ancho imagesx($original);
$alto imagesy($original);

imagecopyresampled($thumb,$original,0,0,0,0,150,150,$ancho,$alto);
imagejpeg($thumb,'thumb.jpg',90); // 90 es la calidad de compresión

?>
yo probe y me da peeroo la idea mia es coje donde dise "original.jpg " poner un valor dinamico obtenido de un SQL qe contiene la ruta de mi imagen pero no me da???

como le puedo hacer para q suba tambien png y gif?
__________________
sitios
www.avisoya.com
www.yavendi.com

Última edición por GatorV; 30/07/2010 a las 22:06
  #6 (permalink)  
Antiguo 30/07/2010, 19:07
Avatar de elbuensaint  
Fecha de Ingreso: marzo-2009
Ubicación: Chiwas
Mensajes: 178
Antigüedad: 15 años, 1 mes
Puntos: 7
Respuesta: como hacer miniaturas de imagenes en carpeta

porque no guardas el valor que recojes de la base de datos en una variable?
ya solo tocaria cambiar esto:
Código PHP:
$original imagecreatefromjpeg("original.jpg"); 
por esto:
Código PHP:
$original imagecreatefromjpeg($ruta); 
donde $ruta es la variable donde guardas el valor de la consulta sql
  #7 (permalink)  
Antiguo 30/07/2010, 19:23
 
Fecha de Ingreso: febrero-2009
Mensajes: 489
Antigüedad: 15 años, 2 meses
Puntos: 8
elbuensaint gracias por tu pronta respuesta
cual es la forma adecuada para declarar la variable en este caso $ruta?

mira mi idea es subir la imagen al servidor en la carpeta de /fotos, guardar la URL de la imagen en la bd y generar la miniatura.

esto es lo q tengo pero me da problema la parte al dar la variable para la miniatura ("$nom_img");

Código PHP:
<?  
/*****Creado por: [email protected]*****/  
/* ginitofl */  
/* Gino Flores Lopez  */

$server="localhost";              /* Nuestro server mysql:  */  
$database="XXXXXXXX";               /* Nuestra base de datos */  
$dbpass="XXXX";               /*Nuestro password */  
$dbuser="XXXX";                 /* Nuestro user  */ 


//datos del arhivo  
$nombre_archivo $HTTP_POST_FILES["userfile"]["name"];  
$tipo_archivo $HTTP_POST_FILES["userfile"]["type"];  
$tamano_archivo $HTTP_POST_FILES["userfile"]["size"];  

//compruebo si las características del archivo son las que deseo  

if (!((strpos($tipo_archivo"gif") || strpos($tipo_archivo"jpeg")) && (    $tamano_archivo 1000000))) 
{  
    echo 
"La extension o el tamano de los archivos no es correcta. <br><br><table><tr><td><li>Se permiten archivos .gif o .jpg<br><li>se permiten archivos de 1 Mb maximo.</td></tr></table>"
?> 
    <script language="javascript"> 
        setTimeout("url()",3000); 
        function url() 
        { 
        window.history.back(); 
        } 
    </script>            
<?     

else 
{  
    
$nom_img$nombre_archivo
     
    
$directorio 'fotos/'

    if (
move_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'],$directorio "/" $nom_img)) 
    {  
            
$diaactualdate("d");  
        
$mesactualdate("m");  
        
$anoactualdate("Y"); 
        
$fecha$diaactual "/" $mesactual "/" $anoactual
         

// Simple Thumb Gen
// Por Alex para WebTaller.com

$original imagecreatefromjpeg("$nom_img");
$thumb imagecreatetruecolor(150,150); // Lo haremos de un tamaño 150x150

$ancho imagesx($original);
$alto imagesy($original);

imagecopyresampled($thumb,$original,0,0,0,0,150,150,$ancho,$alto);
imagejpeg($thumb,'$nom_img',90); // 90 es la calidad de compresión



 //NOS CONECTAMOS A LA BASE DE DATOS 

        
$link=mysql_connect($server,$dbuser,$dbpass); 
                         
        
$query="INSERT INTO anuncios (foto,fecha) VALUES ('$nom_img','$fecha')";   

        
$result=mysql_db_query($database,$query,$link); 
         
        if(
mysql_affected_rows($link)) 
        {  
            echo 
"Anuncio ingresado correctamente";  
             
        } else  
        {  
            echo 
"Error introduciendo el Anuncio";  
        } 
/* Cierre del else */  




    

    else 
    { 
        echo 
"error al subir la foto"
    } 


?>
__________________
sitios
www.avisoya.com
www.yavendi.com

Última edición por GatorV; 30/07/2010 a las 22:07
  #8 (permalink)  
Antiguo 30/07/2010, 19:39
Avatar de elbuensaint  
Fecha de Ingreso: marzo-2009
Ubicación: Chiwas
Mensajes: 178
Antigüedad: 15 años, 1 mes
Puntos: 7
Respuesta: como hacer miniaturas de imagenes en carpeta

Código PHP:
<?php

// Simple Thumb Gen
// Por Alex para WebTaller.com
// Editado por Saint

//codigo para llamar a la base de datos

$ruta $row["rutaimagen"];
$archivo pathinfo($ruta);

if (
$archivo['extension'] == "png") {
$original imagecreatefrompng($ruta);
}elseif (
$archivo['extension'] == "jpg") {
$original imagecreatefromjpeg($ruta);
}elseif (
$archivo['extension'] == "gif") {
$original imagecreatefromgif($ruta);
}

$thumb imagecreatetruecolor(150,150); // Lo haremos de un tamaño 150x150

$ancho imagesx($original);
$alto imagesy($original);

imagecopyresampled($thumb,$original,0,0,0,0,150,150,$ancho,$alto);

if (
$archivo['extension'] == "png") {
imagejpeg($thumb,'thumb.png',90); // Si la imagen es png...
}elseif ($archivo['extension'] == "jpg") {
imagejpeg($thumb,'thumb.jpg',90); // Si la imagen es jpg...
}elseif ($archivo['extension'] == "gif") {
imagejpeg($thumb,'thumb.gif',90); // Si la imagen es gif...
}

?>
Ahora veamos, estoy muy oxidado en lo que se refiere a consultas php-mysql y puede que si te pongo el codigo como lo recuerdo te salgan miles de errores XD supongo que tu ya sabes como se hacen las consultas y que los valores de la base de datos se guardan en un array para mostrarlos despues, pues en este caso el array es "row" y esta llamando al campo "rutaimagen" (aqui tendras que modificar la variable que estas usando y el nombre del campo del cual obtienes la ruta de la imagen).

Lo demas que he hecho es obtener la extension de la imagen por medio de pathinfo y hacer las condiciones para gif, png y jpg, asi podras redimensionar cualquiera de esos tipos de imagen

Cualquier duda tratare de aclararla
  #9 (permalink)  
Antiguo 30/07/2010, 19:56
 
Fecha de Ingreso: febrero-2009
Mensajes: 489
Antigüedad: 15 años, 2 meses
Puntos: 8
Respuesta: como hacer miniaturas de imagenes en carpeta

amigo checa el codigo completo arriba y dime si puedo utilizar la misma variable para la miniatura nom_img ?
__________________
sitios
www.avisoya.com
www.yavendi.com
  #10 (permalink)  
Antiguo 30/07/2010, 20:08
Avatar de elbuensaint  
Fecha de Ingreso: marzo-2009
Ubicación: Chiwas
Mensajes: 178
Antigüedad: 15 años, 1 mes
Puntos: 7
Respuesta: como hacer miniaturas de imagenes en carpeta

ok la parte del codigo del generador de thumbs quedaria asi

Código PHP:
$nom_img $directorio.$nom_img;

$archivo pathinfo($nom_img);

if (
$archivo['extension'] == "png") {
$original imagecreatefrompng($nom_img);
}elseif (
$archivo['extension'] == "jpg") {
$original imagecreatefromjpeg($nom_img;
}elseif (
$archivo['extension'] == "gif") {
$original imagecreatefromgif($nom_img);
}

$thumb imagecreatetruecolor(150,150); // Lo haremos de un tamaño 150x150

$ancho imagesx($original);
$alto imagesy($original);

imagecopyresampled($thumb,$original,0,0,0,0,150,150,$ancho,$alto);

if (
$archivo['extension'] == "png") {
imagejpeg($thumb,'thumb.png',90); // Si la imagen es png...
}elseif ($archivo['extension'] == "jpg") {
imagejpeg($thumb,'thumb.jpg',90); // Si la imagen es jpg...
}elseif ($archivo['extension'] == "gif") {
imagejpeg($thumb,'thumb.gif',90); // Si la imagen es gif...

te deberia de funcionar asi

edit: no me habia fijado que al final del codigo tienes que se guarde con el nombre guardado en $nom_img, segun yo asi solo se guardaria el tumb, eso es lo que quieres hacer? yo en el codigo he puesto que cree un archivo "thumb." con la extension que corresponde ya que he lo he editado desde el primer codigo que dejaste.
  #11 (permalink)  
Antiguo 30/07/2010, 20:20
 
Fecha de Ingreso: febrero-2009
Mensajes: 489
Antigüedad: 15 años, 2 meses
Puntos: 8
Respuesta: como hacer miniaturas de imagenes en carpeta

elbuensaint si va funcionando bien lo unico es q la imagen miniatura se crea y queda con este nombre thumb y al ingresar otra imagen esta la sobre escribe.

hay alguna forma para que esta quedo tn_nombrearchivo.formato?

muchas gracias
__________________
sitios
www.avisoya.com
www.yavendi.com
  #12 (permalink)  
Antiguo 30/07/2010, 20:26
Avatar de elbuensaint  
Fecha de Ingreso: marzo-2009
Ubicación: Chiwas
Mensajes: 178
Antigüedad: 15 años, 1 mes
Puntos: 7
Respuesta: como hacer miniaturas de imagenes en carpeta

Código PHP:
$nom_tmb "tn_".$nom_img;
$nom_img $directorio.$nom_img;

$archivo pathinfo($nom_img);

if (
$archivo['extension'] == "png") {
$original imagecreatefrompng($nom_img);
}elseif (
$archivo['extension'] == "jpg") {
$original imagecreatefromjpeg($nom_img;
}elseif (
$archivo['extension'] == "gif") {
$original imagecreatefromgif($nom_img);
}

$thumb imagecreatetruecolor(150,150); // Lo haremos de un tamaño 150x150

$ancho imagesx($original);
$alto imagesy($original);

imagecopyresampled($thumb,$original,0,0,0,0,150,150,$ancho,$alto);
imagejpeg($thumb,$nom_tmb,90); 
prueba esto, creo que asi se guardaria con el prefijo "tn_", no lo he probado XD
  #13 (permalink)  
Antiguo 30/07/2010, 20:47
 
Fecha de Ingreso: febrero-2009
Mensajes: 489
Antigüedad: 15 años, 2 meses
Puntos: 8
Respuesta: como hacer miniaturas de imagenes en carpeta

XD si gracias ya esta guardanto el tn_ pero la guarda en la raiz como se puede hacer para guardar en la carpeta de /fotos?

uy amigo gracias
__________________
sitios
www.avisoya.com
www.yavendi.com
  #14 (permalink)  
Antiguo 30/07/2010, 21:07
Avatar de elbuensaint  
Fecha de Ingreso: marzo-2009
Ubicación: Chiwas
Mensajes: 178
Antigüedad: 15 años, 1 mes
Puntos: 7
Respuesta: como hacer miniaturas de imagenes en carpeta

cambia la primer linea:
Código PHP:
$nom_tmb "tn_".$nom_img
por esto otro
Código PHP:
$nom_tmb $directorio."tn_".$nom_img
  #15 (permalink)  
Antiguo 30/07/2010, 21:12
 
Fecha de Ingreso: febrero-2009
Mensajes: 489
Antigüedad: 15 años, 2 meses
Puntos: 8
(Y) (Y) :) gracias

elbuensaint ya me dio pena pero se q tu me puede colaborar.
veo es q cuando yo inserto mi imagen por medio el form y ejecuto el codigo este va bien subi la imagen a la carpeta, guarda en la URL y crea la miniatura bien pero pensando si alguien inserte una imagen con el mismo nombre esta se va a sobre escribir, cierto.

sera q se podra al nombre de la imagen q se va a subir a la carpeta agregarle el id_afiliado para si diferencialas ej 1img.jpg ?

traeria el dato del afilido por medio del form

Código PHP:
 $id_afiliado $HTTP_POST_FILES["id_afiliado"]; 
__________________
sitios
www.avisoya.com
www.yavendi.com

Última edición por GatorV; 30/07/2010 a las 22:07
  #16 (permalink)  
Antiguo 30/07/2010, 22:16
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
De acuerdo Respuesta: como subir una imagen a mi servidor, guardar la URL en mi bd y reducir im

tu mismo te diste la respuesta mas obvia ya que el id es unico yo cuando subo imagenes tambien le coloco aparte un codigo randon para asegurar que estas no se repitan pero eso es x gusto mio pero con el id solamente tendrias suerte,
edito yo concateno el nombre de la imagen con el id y un codigo randon para no kitarle el nombre que el usuario le puso
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #17 (permalink)  
Antiguo 31/07/2010, 00:31
Avatar de elbuensaint  
Fecha de Ingreso: marzo-2009
Ubicación: Chiwas
Mensajes: 178
Antigüedad: 15 años, 1 mes
Puntos: 7
Respuesta: como subir una imagen a mi servidor, guardar la URL en mi bd y reducir im

en el else (despues del javascript) es donde defines la variable del nombre de la imagen, solo tendrias que cambiar esto:
Código PHP:
    $nom_img$nombre_archivo
por esto:
Código PHP:
    $nom_img $id_afiliado.$nombre_archivo
y pues obviamente definir la variable id_afiliado como lo has puesto, al inicio del codigo, igual que con las otras variables que recogen los datos del formulario
  #18 (permalink)  
Antiguo 31/07/2010, 03:35
 
Fecha de Ingreso: enero-2002
Mensajes: 1.174
Antigüedad: 22 años, 3 meses
Puntos: 21
Respuesta: como subir una imagen a mi servidor, guardar la URL en mi bd y reducir im

Será muy importante que al final publiques la solución que hayas implementado finalmente, sería muy útil conocerla.

Gracias, estaré atento.
  #19 (permalink)  
Antiguo 31/07/2010, 07:52
 
Fecha de Ingreso: febrero-2009
Mensajes: 489
Antigüedad: 15 años, 2 meses
Puntos: 8
elbuensaint lo he puesto asi como dises pero no pasa nada he declaro la variable id_afiliado asi como esat arriba pero no esta pasado el id_afiliado?? porq sera? pues en el formulario lo tengo asi

formulario.php
Código PHP:
<form enctype="multipart/form-data" action="gr.php" method="post">
  <
p align="center">
    <
input type="hidden" name="MAX_FILE_SIZE" value="10000000" />
    <
strong>Subir esta imagen:</strong>
    <
input name="userfile" type="file" id="userfile" />
  </
p>
  <
p align="center">
    <
input type="submit" name='submit' value="Subir Fichero" />
    <
label for="id_afiliado"></label>
    <
input type="text" name="id_afiliado" id="id_afiliado" />
  </
p>
</
form
Bier claro cuando se termine el codigo lo pongo completo y si quieres te envio un mensaje privado XD
__________________
sitios
www.avisoya.com
www.yavendi.com

Última edición por GatorV; 31/07/2010 a las 09:30
  #20 (permalink)  
Antiguo 31/07/2010, 11:55
Avatar de elbuensaint  
Fecha de Ingreso: marzo-2009
Ubicación: Chiwas
Mensajes: 178
Antigüedad: 15 años, 1 mes
Puntos: 7
Respuesta: como subir una imagen a mi servidor, guardar la URL en mi bd y reducir im

el HTTP_POST_FILES es para archivos. Tienes que usar $_POST
Código PHP:
$id_afiliado $_POST["id_afiliado"]; 
  #21 (permalink)  
Antiguo 31/07/2010, 13:22
 
Fecha de Ingreso: febrero-2009
Mensajes: 489
Antigüedad: 15 años, 2 meses
Puntos: 8
Respuesta: como subir una imagen a mi servidor, guardar la URL en mi bd y reducir im

elbuensaint EXCELENTE el problema era la declaracion de la variable uy gracias de nuevo
__________________
sitios
www.avisoya.com
www.yavendi.com
  #22 (permalink)  
Antiguo 31/07/2010, 14:24
Avatar de elbuensaint  
Fecha de Ingreso: marzo-2009
Ubicación: Chiwas
Mensajes: 178
Antigüedad: 15 años, 1 mes
Puntos: 7
Respuesta: como subir una imagen a mi servidor, guardar la URL en mi bd y reducir im

de nada y aqui andamos para cualquier duda

  #23 (permalink)  
Antiguo 04/08/2010, 20:02
 
Fecha de Ingreso: febrero-2009
Mensajes: 489
Antigüedad: 15 años, 2 meses
Puntos: 8
Respuesta: como subir una imagen a mi servidor, guardar la URL en mi bd y reducir im

mirando lo q le falta al este codigo seria q también la imagen orginal se re dimensione a 600x400
__________________
sitios
www.avisoya.com
www.yavendi.com

Etiquetas: bd, img, reducir, subir, url, servidores
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 23:55.