Foros del Web » Programando para Internet » PHP »

Redimencionar imagen y guardar en BD

Estas en el tema de Redimencionar imagen y guardar en BD en el foro de PHP en Foros del Web. buenas tardes amigos.. Tal como dice el titulo, necesito reducir el tamaño de una imagen y guardarla en BD. Pero no es tan sencillo como ...
  #1 (permalink)  
Antiguo 05/08/2011, 13:37
Avatar de Heiroon  
Fecha de Ingreso: junio-2010
Ubicación: Caracas, Venezuela - Por ahora...
Mensajes: 495
Antigüedad: 13 años, 10 meses
Puntos: 63
Exclamación Redimencionar imagen y guardar en BD

buenas tardes amigos..

Tal como dice el titulo, necesito reducir el tamaño de una imagen y guardarla en BD. Pero no es tan sencillo como parece, al menos no para mi... Explico porque.

Normalmente guardamos en bd el nombre de la img y subimos la imagen fisica a una carpeta.. Pues en mi caso estoy guardando la imagen como binario en un campo de BD.

Sin embargo me parece logico poder dar tratamiento a la imagen y luego hago m proceso.. Ojo: ya guardo la imagen en BD. Solo quiero adaptar lo de la redimencion..

Aca les dejo el codigo para ver si pueden ayudarme (que ya tienen tiempo que no lo hacen ) hehe..

Código PHP:
Ver original
  1. switch($_REQUEST['action'])
  2.             {
  3.                 case 'r':
  4.                     if(isset($_FILES["fil_ima_usu"])&&isset($_REQUEST['id_usu']))
  5.                     {  
  6.                         $id = $_REQUEST['id_usu'];
  7.                         $type = $_FILES["fil_ima_usu"]["type"];
  8.                         $tmp_name = $_FILES["fil_ima_usu"]["tmp_name"];
  9.                         $fp = fopen($tmp_name, "rb");
  10.                         $buffer = fread($fp, filesize($tmp_name));
  11.                         fclose($fp);
  12.                         $buffer=pg_escape_bytea($buffer);
  13.                         $message= _('Aparentemente se ha hecho la cosa correctamente!');
  14.                    
  15.                         $query = "SELECT f_actualiza_imagen_usuario('".$id."','".$buffer."'::Bytea)";
  16.                                            
  17.                         $ConnPG->BeginTrans();
  18.                         $ConnPG->Query($query);
  19.                                            
  20.                         $retVal = $ConnPG->Fresult();
  21.                    
  22.                         //print $ConnPG->GetLastError();
  23.                        
  24.                         if ($retVal==null)
  25.                         $message = _('Error durante la actualización');
  26.                         else
  27.                         $ConnPG->CommitTrans();                            
  28.                     }
  29.                     else
  30.                     {
  31.                         $message='Estos no son los datos el mio';
  32.                     }
  33.                 break;
  34.                 case 'm':
  35.                     echo "You end right here";
  36.                     die();
  37.                 break;
  38.             }

Estoy trabajando con PostgreSQL por cierto... Cualkier cosa diganme porfavor.. Saludos!
__________________
Gmail : [email protected]
Twitter: @heiroon

I'm back!
  #2 (permalink)  
Antiguo 05/08/2011, 13:40
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Redimencionar imagen y guardar en BD

Buscador, amigo.... el buscador es tu mejor amigo, si lo hubieras usado con "redimensionar imagenes" seguro te habria llevado a: http://www.forosdelweb.com/f68/aport...agenes-912637/

Saludos.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 05/08/2011, 13:51
Avatar de Heiroon  
Fecha de Ingreso: junio-2010
Ubicación: Caracas, Venezuela - Por ahora...
Mensajes: 495
Antigüedad: 13 años, 10 meses
Puntos: 63
Desacuerdo Respuesta: Redimencionar imagen y guardar en BD

ok.. Creo que no me explique bien.. aca voy de nuevo... NO necesito usar una libreria... Porq si abres por ejemplo esa que me pasaste, te daras cuenta que TODOS lo metodos dicen"Subir" y yo no necesito subir.. Necesito solo redimencionar..

Por lo tanto solo quiero saber como se aplicaria la metodologia de PHP sencilla en mi codigo.. aquella de imagecreatefrompng y esas cosas que no recuerdo.. y para saber si se podia, porq de verdad nunca habia utilizado este modo de guardar la imagen como binario (bytea).. pero ya bueno... pruebo yo y aporto..

que mas queda??

P.D.: y por cierto. Ya la habia buscado y la habia visto... Esa, la de verot y tres mas... ;)
__________________
Gmail : [email protected]
Twitter: @heiroon

I'm back!
  #4 (permalink)  
Antiguo 05/08/2011, 13:57
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Redimencionar imagen y guardar en BD

Es verdad que los métodos dicen subir, pero no es requerible hacerlo. Lo importante es que la imagen esté en el servidor y luego con la ruta es suficiente. Donde dice $_FILES... cambiala por la ruta donde está la imagen.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 05/08/2011, 14:48
Avatar de Heiroon  
Fecha de Ingreso: junio-2010
Ubicación: Caracas, Venezuela - Por ahora...
Mensajes: 495
Antigüedad: 13 años, 10 meses
Puntos: 63
Exclamación Respuesta: Redimencionar imagen y guardar en BD

Gracias @abimaelrc, te explico un poco mas... la imagen no va a una carpeta en el servidor como tal, va al campo de una tabla en base de datos llamado ima_usu.

lo hago asi:
Código PHP:
Ver original
  1. $id = $_REQUEST['id_usu']; //id del usuario q cambia la img
  2.         $type = $_FILES["fil_ima_usu"]["type"]; //tipo de image (jpg, gif, png)
  3.         $tmp_name = $_FILES["fil_ima_usu"]["tmp_name"]; //nombre img
  4.         $fp = fopen($tmp_name, "rb"); // tomo la imagen
  5.         $buffer = fread($fp, filesize($tmp_name)); // la leo
  6.         fclose($fp);
  7.         $buffer=pg_escape_bytea($buffer); // la combierto en binario
  8.         $message= _('Aparentemente se ha hecho la cosa correctamente!');
  9.                    
  10.         $query = "SELECT actualiza_imagen_usuario('".$id."','".$buffer."'::Bytea)";
  11.                 //a traves de esta funcion pl/pgsql la guardo en la base de datos

como podria aplicar una libreria que solo haga resize a la imagen y despues lance la funcion pl/pgsql?
__________________
Gmail : [email protected]
Twitter: @heiroon

I'm back!
  #6 (permalink)  
Antiguo 05/08/2011, 14:57
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Redimencionar imagen y guardar en BD

Pero si estás usando un $_FILES

Bueno lo que se me ocurre es que redimensiones, y luego tomes el valor usando ob_start. Algo como
Código PHP:
Ver original
  1. <?php
  2. require_once 'ModifiedImage.php';
  3. $image = new ModifiedImage($_FILES['image']['tmp_name'])
  4. $image->resizeToWidth(400);
  5.  
  6. $image->output();
  7. $imageBinary = pg_escape_bytea(ob_end_clean());
  8.  
  9. $sql = "INSERT INTO tabla VALUES('$imageBinary')";
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #7 (permalink)  
Antiguo 05/08/2011, 15:01
Avatar de Heiroon  
Fecha de Ingreso: junio-2010
Ubicación: Caracas, Venezuela - Por ahora...
Mensajes: 495
Antigüedad: 13 años, 10 meses
Puntos: 63
Respuesta: Redimencionar imagen y guardar en BD

Pruebo y te digo.. Gracias!
__________________
Gmail : [email protected]
Twitter: @heiroon

I'm back!
  #8 (permalink)  
Antiguo 05/08/2011, 15:25
Avatar de Heiroon  
Fecha de Ingreso: junio-2010
Ubicación: Caracas, Venezuela - Por ahora...
Mensajes: 495
Antigüedad: 13 años, 10 meses
Puntos: 63
Respuesta: Redimencionar imagen y guardar en BD

@abimaelrc esta fue la adaptacion que hice en mi codigo...

Código PHP:
Ver original
  1. $id = $_REQUEST['id_usu'];
  2.                                                                        
  3.                         $tmp_name = new ModifiedImage($_FILES['fil_ima_usu']['tmp_name']);
  4.                         $tmp_name->resizeToWidth(10);
  5.                        
  6.                         ob_start();
  7.                         $tmp_name->output();
  8.                         $imageBinary = pg_escape_bytea(ob_end_clean());
  9.                                                                
  10.                         $message= _('Aparentemente se ha hecho la cosa correctamente!');
  11.                    
  12.                         $query = "SELECT f_actualiza_imagen_usuario('".$id."','".$imageBinary."'::Bytea)";

La respuesta que me devuelve es 1...

la libreria esta incluida arriba y con la ruta correcta.. ;)
__________________
Gmail : [email protected]
Twitter: @heiroon

I'm back!
  #9 (permalink)  
Antiguo 05/08/2011, 15:58
Avatar de Heiroon  
Fecha de Ingreso: junio-2010
Ubicación: Caracas, Venezuela - Por ahora...
Mensajes: 495
Antigüedad: 13 años, 10 meses
Puntos: 63
Exclamación Respuesta: Redimencionar imagen y guardar en BD

No hay manera de redimencionar una imagen con codigop nativo??? sin usar una libreria?? porq todas mandan a carpetas y NO!! me sirven...


Solo necesito redimencionar y q devuelva la imagen... sin ubicarla en ninguna carpeta...


Alguien sabe como???
__________________
Gmail : [email protected]
Twitter: @heiroon

I'm back!
  #10 (permalink)  
Antiguo 05/08/2011, 16:10
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Redimencionar imagen y guardar en BD

Creo que es algo bastante sencillo, simplemente tienes que usar el metodo output(), que para eso existe.

$variable = $_img->output();

Y en tu base de datos guardas el contenido de $variable en el cambo blob.

Sorry, ya te lo habia dicho Abimael

Pero es que es asi de sencillo, si algo fallo es porque la imagen no se subio correctamente o hubo un error en el load()
__________________
- León, Guanajuato
- GV-Foto
  #11 (permalink)  
Antiguo 05/08/2011, 20:05
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Redimencionar imagen y guardar en BD

Haz un echo a imageBinary y mira a ver si te produce el código binario.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos

Etiquetas: Ninguno
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.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:05.