Foros del Web » Programando para Internet » Node.js »

Mostrar set de imagenes - Content type: image

Estas en el tema de Mostrar set de imagenes - Content type: image en el foro de Node.js en Foros del Web. Desde una bbdd sqlite3 estoy leyendo un conjunto de tiles que conforman una imagen completa. El ciclo de lectura lo hago bien, el problema es ...
  #1 (permalink)  
Antiguo 28/07/2015, 10:58
Avatar de pcarvajal  
Fecha de Ingreso: enero-2002
Mensajes: 701
Antigüedad: 22 años, 4 meses
Puntos: 8
Mostrar set de imagenes - Content type: image

Desde una bbdd sqlite3 estoy leyendo un conjunto de tiles que conforman una imagen completa.

El ciclo de lectura lo hago bien, el problema es como desplegar todas las imagenes que conforman la imagen completa ya que con el codigo que estoy utilzando solo logro mostrar una.

Alguien tiene idea de como resolverlo?


Código Javascript:
Ver original
  1. var sql = "SELECT images.tile_data FROM images, map WHERE images.tile_id = map.tile_id AND map.zoom_level = 14 AND map.tile_column = 14125";
  2.  
  3.     db.each(sql, function(err, row) {
  4.             console.log(row.tile_data);
  5.             res.writeHead(200, {'Content-Type': 'image/jpg' });
  6.             res.end(row.tile_data, 'binary');      
  7.  
  8.     });
__________________
18 laaaaargos años en FDW... y soy de los pocos que ví correr sangre! :X
  #2 (permalink)  
Antiguo 28/07/2015, 14:35
Avatar de TMeister
Crazy Coder
 
Fecha de Ingreso: enero-2002
Ubicación: En la Oficina
Mensajes: 2.880
Antigüedad: 22 años, 4 meses
Puntos: 193
Respuesta: Mostrar set de imagenes - Content type: image

Asi rapido y sin probar

Código Javascript:
Ver original
  1. var sql = "SELECT images.tile_data FROM images, map WHERE images.tile_id = map.tile_id AND map.zoom_level = 14 AND map.tile_column = 14125";
  2. var output;
  3. res.writeHead(200, {'Content-Type': 'image/jpg' });
  4. db.each(sql, function(err, row) {
  5.         console.log(row.tile_data);
  6.         output += row.tile_data;
  7. });
  8. res.end(output, 'binary');
  #3 (permalink)  
Antiguo 29/07/2015, 07:51
Avatar de pcarvajal  
Fecha de Ingreso: enero-2002
Mensajes: 701
Antigüedad: 22 años, 4 meses
Puntos: 8
Respuesta: Mostrar set de imagenes - Content type: image

uf! gracias por contestar!

es buena idea, la implemente pero me tira errores... me dice que "la imagen no puede ser mostrada porque contiene errores", asi que cambie el res.end por un res.write
Código Javascript:
Ver original
  1. res.writeHead(200, {'content-type':'image/png'});
  2.     var sqlite3 = require('sqlite3').verbose();
  3.     var db = new sqlite3.Database('./routes/shimabara.mbtiles');
  4.     var sql = "SELECT images.tile_data FROM images, map WHERE images.tile_id = map.tile_id AND map.zoom_level = 14 AND map.tile_column = 14125";   
  5.     db.each(sql, function(err, row) {
  6.             console.log(row.tile_data);
  7.             output += row.tile_data;
  8.             //res.write('<img src="'+row.tile_data+'">&nbsp;', 'binary');
  9.     });
  10.     db.close();
  11.     res.write(output, 'binary');

pero me arroja este error por consola
Código Javascript:
Ver original
  1. Express server listening on port 3000
  2. TypeError: first argument must be a string or Buffer

se me ocurre (como alternativa), mostrar las imagenes en contenido html de la siguiente manera:
Código Javascript:
Ver original
  1. res.writeHead(200, {'content-type':'text/html'});
  2.  
  3.     var sqlite3 = require('sqlite3').verbose();
  4.     var db = new sqlite3.Database('./routes/shimabara.mbtiles');
  5.     var sql = "SELECT images.tile_data FROM images, map WHERE images.tile_id = map.tile_id AND map.zoom_level = 14 AND map.tile_column = 14125";   
  6.     db.each(sql, function(err, row) {
  7.             console.log(row.tile_data);
  8.             res.write('<img src="'+row.tile_data+'">&nbsp;', 'binary');
  9.     });
  10.     db.close();

pero al ejecutarlo, en vez de mostrarme la imagen en el navegador, me muestra un monton de caracteres ascii... (igual que cuando abres una imagen con un editor de texto)

Código Javascript:
Ver original
  1. (ıBııı=ıXı*ııı8qı8ı >ııN;ıñıs(%ı¡ıııı7_ıı)ıs1Oıııııııfkıl RJıı/Qı1qııııı3|ı0ı'ıııı^æG+rıııNııı_ııızıoıı_$ıMııııi5ıııı<|dııı~ııııııAııımı?ı`ıısıyısOı%_ıı4ı:ıııpxı;ı9ısxıPZıııııı$BH|6_B ıı8/pı#ıııı_ıııııııı{†ııBııııııııp(ıııııIıı>W!DıngLııı\ıuııııı(ıııı#p|ııı<ıııııı-ı(GOOızı|ııı{Äıhııııııq#fıı]zı]ıııı!ıRıı¶ııujııZıı ıııı#ıı ı›\ıı"Âı'ııı;oıP[ıkg@ ıı.ı"|ıızıı'ı?ı_zAıbikıııııOı\@ııııwıı8rıÔııp) ıo13s /$ıVı.ıı:ıııpnı$ııYkıııbı$ııRıı%ııãıııı/2ııııı4ı12<ı.""oı3\ı`ııy`vıı$Oırbhııı#_ııııı'ıııı EıHı5GıııDıXıRı!ıcııxÆıı[ı7ııv947ı!EıwııxıKı!R 8xtııı<ı ıııı ıı 6 ıııııBı"ııı=xIv} wYıı7ı\_`ı6h+ıı`ııııÓı'XırıRNqıı Nıvıı}P_e!ı ıııııııs;}ı*kZıııı<ıııı$ıË[ıııı]6ıvVWııı8mııFaıııııuıvıııFııCı1&#8216;zıTııııı^ıııiı'ııC^jvıMı>ıhııımı(qmı&DııIP^ııııUıADıb"8ı7ıııııı?ıı'/ıYırıı5ıııR(ıx<ı[ııJEvvvııd/*t=ı yc}ııIıı-ıı<|ıııı=ııııı?xSHıı7.ozıııı)ıımı|ııızıı"Wııı|fı1ıızııı ı[ıııMNııı' àıı ııoııızk/ıM9_ıck[ıUıııXıııP8ııı#gıı: ıG A.ıhıtıı.ııCSııı186ıısı;ı^ı&ııııQı /ı#Gfııııı-‡ı^ıpD0nk 9ıııı-ıse*ıııııııCEıBııı=ı{ıı ı!ıCııııı "ı *ııı{ıı ıı ııııııı)ıRınııwııWıııKH)ıırıGRxRııııı|gı5ılue)ı
__________________
18 laaaaargos años en FDW... y soy de los pocos que ví correr sangre! :X
  #4 (permalink)  
Antiguo 30/07/2015, 06:31
Avatar de pcarvajal  
Fecha de Ingreso: enero-2002
Mensajes: 701
Antigüedad: 22 años, 4 meses
Puntos: 8
Respuesta: Mostrar set de imagenes - Content type: image

como no va a haber nadie que me pueda hechar una manito....
__________________
18 laaaaargos años en FDW... y soy de los pocos que ví correr sangre! :X
  #5 (permalink)  
Antiguo 30/07/2015, 11:17
Avatar de Carlangueitor
Moderador ლ(ಠ益ಠლ)
 
Fecha de Ingreso: marzo-2008
Ubicación: México
Mensajes: 10.037
Antigüedad: 16 años, 1 mes
Puntos: 1329
Respuesta: Mostrar set de imagenes - Content type: image

¿Y por que guardas las imágenes de esa manera? ¿Por que no guardas las rutas?

De cualquier manera la forma que te puso TMesiter debería funcionar, solo que te falta definir output antes, y no he usado la librería de sqlite, pero sospecho que es asincrono y debes hacer el res.write dentro del callback.

Saludos:adio:
__________________
Grupo Telegram Docker en Español
  #6 (permalink)  
Antiguo 30/07/2015, 12:50
Avatar de pcarvajal  
Fecha de Ingreso: enero-2002
Mensajes: 701
Antigüedad: 22 años, 4 meses
Puntos: 8
Respuesta: Mostrar set de imagenes - Content type: image

no es que YO quiera guardar las imagenes en la db de esa manera... es que es algo que esta hecho asi y no hay mucho que hacer...

la manera que TMesiter me indico me arroja un error por consola... de hecho lo explique en el posteo de arriba..

saludos
__________________
18 laaaaargos años en FDW... y soy de los pocos que ví correr sangre! :X
  #7 (permalink)  
Antiguo 30/07/2015, 14:48
Avatar de Carlangueitor
Moderador ლ(ಠ益ಠლ)
 
Fecha de Ingreso: marzo-2008
Ubicación: México
Mensajes: 10.037
Antigüedad: 16 años, 1 mes
Puntos: 1329
Respuesta: Mostrar set de imagenes - Content type: image

Y de hecho te comenté la solución.
__________________
Grupo Telegram Docker en Español
  #8 (permalink)  
Antiguo 31/07/2015, 07:31
Avatar de pcarvajal  
Fecha de Ingreso: enero-2002
Mensajes: 701
Antigüedad: 22 años, 4 meses
Puntos: 8
Respuesta: Mostrar set de imagenes - Content type: image

mmm, aun asi me arroja el error por consola..
__________________
18 laaaaargos años en FDW... y soy de los pocos que ví correr sangre! :X
  #9 (permalink)  
Antiguo 31/07/2015, 10:33
Avatar de Carlangueitor
Moderador ლ(ಠ益ಠლ)
 
Fecha de Ingreso: marzo-2008
Ubicación: México
Mensajes: 10.037
Antigüedad: 16 años, 1 mes
Puntos: 1329
Respuesta: Mostrar set de imagenes - Content type: image

Código muchacho! No podemos adivinar que haces.
__________________
Grupo Telegram Docker en Español
  #10 (permalink)  
Antiguo 31/07/2015, 12:37
Avatar de pcarvajal  
Fecha de Ingreso: enero-2002
Mensajes: 701
Antigüedad: 22 años, 4 meses
Puntos: 8
Respuesta: Mostrar set de imagenes - Content type: image

pero si es el mismo codigo de arriba pues!

este codigo me arroja el error por consola:
Código Javascript:
Ver original
  1. var sqlite3 = require('sqlite3').verbose();
  2.     var db = new sqlite3.Database('./routes/shimabara.mbtiles');
  3.     var sql = "SELECT images.tile_data FROM images, map WHERE images.tile_id = map.tile_id AND map.zoom_level = 14 AND map.tile_column = 14125";  
  4. var output;
  5.  
  6. res.writeHead(200, {'content-type':'image/png'});
  7.     db.each(sql, function(err, row) {
  8.             console.log(row.tile_data);
  9.             output += row.tile_data;
  10.     });
  11.     db.close();
  12.     res.write(output, 'binary');

y este otro codigo (que es la alternativa al de arriba) me arroja el ascii por el browser:

Código Javascript:
Ver original
  1. res.writeHead(200, {'content-type':'text/html'});
  2.     var sqlite3 = require('sqlite3').verbose();
  3.     var db = new sqlite3.Database('./routes/shimabara.mbtiles');
  4.     var sql = "SELECT images.tile_data FROM images, map WHERE images.tile_id = map.tile_id AND map.zoom_level = 14 AND map.tile_column = 14125";    
  5.     db.each(sql, function(err, row) {
  6.             res.write('<img src="data:image/png;base64,'+row.tile_data+'">&nbsp;');
  7.     });
  8.     db.close();
__________________
18 laaaaargos años en FDW... y soy de los pocos que ví correr sangre! :X

Etiquetas: content, image, imagenes, set, type
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:45.