Foros del Web » Programando para Internet » PHP »

Imágenes a base de datos

Estas en el tema de Imágenes a base de datos en el foro de PHP en Foros del Web. Hola a todos, normalmente estoy en el foro de flash así que no suelo venir por aquí y no sé si la pregunta es muy ...
  #1 (permalink)  
Antiguo 26/10/2006, 06:42
Avatar de sirguy  
Fecha de Ingreso: septiembre-2006
Ubicación: Mallorca
Mensajes: 959
Antigüedad: 17 años, 6 meses
Puntos: 12
Imágenes a base de datos

Hola a todos, normalmente estoy en el foro de flash así que no suelo venir por aquí y no sé si la pregunta es muy tonta o no, pero en fin, he hecho varias pruebas fallidas y he buscado por internet y nada...

El tema es que tengo un flash en el que pintas, dibujas, etc. El flash tiene además un botón que al pulsar lo que hace es enviar los datos a un PHP. Éste lo que hace es mostrar la imagen en una nueva ventana. Hasta aquí todo funciona bien (normal, porque viene con un tutorial).

El PHP lo que viene a hacer es coger variables que le envío desde flash y convertir el swf en .jpg, finalmente con imagejpeg, se muestra la imagen.

Lo que me gustaría saber es si se puede guardar esa imagen en un sql junto con una cadena de texto que también he incluído ($nom) además del id claro.

Aquí os dejo el código:


<?php

//http://www.sephiroth.it/tutorials/flashPHP/print_screen/

error_reporting(0);

$nom=$_POST["nom"];
$w = (int)$_POST['width'];
$h = (int)$_POST['height'];


$img = imagecreatetruecolor($w, $h);

imagefill($img, 0, 0, 0xFFFFFF);

$rows = 0;
$cols = 0;


for($rows = 0; $rows < $h; $rows++){

$c_row = explode(",", $_POST['px' . $rows]);
for($cols = 0; $cols < $w; $cols++){

$value = $c_row[$cols];

if($value != ""){

$hex = $value;
while(strlen($hex) < 6){
$hex = "0" . $hex;
}

$r = hexdec(substr($hex, 0, 2));
$g = hexdec(substr($hex, 2, 2));
$b = hexdec(substr($hex, 4, 2));

$test = imagecolorallocate($img, $r, $g, $b);

imagesetpixel($img, $cols, $rows, $test);
}
}
}




header("Content-type:image/jpeg");


imagejpeg($img, "", 85);
?>

No sé si es muy espesa la pregunta, pero de todas maneras gracias a todos por el interés.
  #2 (permalink)  
Antiguo 26/10/2006, 07:13
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Bueno .. al parecer tu código usa GD (www.php.net/gd) para generar la imagen .. Tambien hace uso de cabeceras HTTP para enviar la imagen generada al instante ("en línea").

No sé como quieres gestionar tus datos en tu BBDD, me refiero principalmente a la imagen en sí .. No sé si quieres almacenar tu imagen como "binario" en tu BBDD o bien generar un archvio y en tu BBDD sólo vincularlo con el nombre del archivo que generes.

Si te vas por el lado del "binario" .. en ese caso tu imagen tienes que generarla hacia un "string", para eso puedes capturar el buffer de salida de PHP y así tener tu dato "binario" de tu imagen sobre una variable:

Código PHP:
<?php
// inicio de captura del buffer.
ob_start(); 
   
// tu código actual .. (sin el header() que envia cabeceras HTTP)
   
$imagen_binario ob_get_contents();
ob_end_clean

// A partir de aquí .. ya tienes tu imagen lista para procesarla .. hasta podrías "mostrarla" a la vez que la registras a tu BBDD, usando:

// Proceso de tu registro de datos a tu BBDD ...

// Enviar la imagen al cliente (navegador).
header("Content-type:image/jpeg");
echo 
$imagen_binario;
?>

Si quieres generar un archivo de tu imagen .. el 2° parámetro de imagejpeg() que usas ahora como: "" .. es ahí donde indicarías tu nombre de archivo y ruta ...

Posteriormente actuaría tu código de ingreso de datos a tu BBDD. No sé si eso lo manejas ya .. pero es un "INSERT" común y los datos ya los tendrías a mano ahí mismo $nom, el nombre de la imagen que des .. y ese ID que mencionas que no sé de donde sale (o será que se el "ID" autonumérico típico .. por qué si es así .. eso lo generá Msyql al ingresar tu registro .. no tú a mano).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 26/10/2006, 07:13
 
Fecha de Ingreso: agosto-2003
Mensajes: 68
Antigüedad: 20 años, 8 meses
Puntos: 0
Ok entiendo tu inquietud, yo ante tenia algo parecido a lo tuyo, el problema que se me presentaba era que al cargar la imagen en la tabla en blob me hacia muy pesada la tabla, por lo que decidí copiar las imagenes creadas a una carpeta y desde ahi la visualizaba, para ello cree una tabla donde guardaba los item que necesitaba como id, nombre de la imagen, ancho, alto, descripción..

Luego para copiar la imagen creada use la siguiente funcion

if(!@imagejpeg($img,$dir.''.$nombre_imagen, $tamano))

Te defina cada una de ellas:
$img es la variable donde se creo la imagen, la cual es igual a la tuya...
$dir es el directorio donde almacenara las imagenes
$nombre_imagen es el nombre que le daras a la imagen
$tamano el tamaño de la imagen en este caso yo lo considere el ancho

Esto lo copie ante de:

imagejpeg($img, "", 85);

una vez hecho esto procedia a insertar los datos requerido en la tabla de imagen...

Espero que te pueda servir....

Bye
__________________
AdsParaTuWeb.com
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 02:06.