Como exportar la imagen de un campo blob a una imagen jpg desde powerbuilder?

Si alguien sabe como exportar a una ruta como tipo jpg una imagen que se muestra en una campo tipo BLOB.

Respuesta

Lo primero que tendrías que hacer es coger el blob de tu tabla con una SELECT a una variable tipo Blob. Por ejemplo:

SELECT IMAGEN 
INTO :bBlob
FROM MI_TABLA
WHERE ID = 1;

Ahora, ese blob se lo puedes mandar a la siguiente función:

//--------------------------------------------------------------
// Función : gf_BlobToFile(blob bpArchivo, string srRuta)
// Descripción: Coge un blob y lo guarda en la ruta indicada.
// Parámetros : bpArchivo.- Blob con el fichero.
//              srRuta   .- Ruta destino del fichero. (C:\Temp\Imagen1.jpeg)
// Devuelve : nada
//--------------------------------------------------------------
Blob bTrozo
long lFichero, lLong = 0, lSize, lPos = 1, lLoops, i
lFichero = FileOpen(srRuta,StreamMode!,Write!,LockReadWrite!,Replace!) 
IF lFichero <= 0 THEN Return -1
// Se averigua el número de trozos en que ha de partirse el blob.
lSize = len(bpArchivo) 
IF lSize > 32765 THEN
  IF Mod(lSize, 32765) = 0 THEN
    lLoops = lSize/32765
  ELSE
    lLoops = (lSize/32765) + 1
  END IF
ELSE
  lLoops = 1
END IF
// Se guardan los trozos del blob en el fichero.
FOR i = 1 to lLoops 
  bTrozo = BlobMid(bpArchivo, (((32765 * i) - 32765) + 1), 32765)
  FileWrite(lFichero, bTrozo)
NEXT
FileClose(lFichero)
Return 1

NOTA: El fichero debe guardarse con la misma extensión que se guardó el blob. Es decir, si era un .gif, deberías guardarlo .gif. Si era .jpg o .png deberías guardarlo como .jpg o .png. Como fuese en un inicio. Yo siempre que uso blobs tengo otra columna en la tabla donde guardo el nombre de fichero y su extensión, por ejemplo Mi_Imagen.jpeg. Luego recupero ese nombre en un string y es el que uso para guardar el fichero ;) .

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas