Espacio ocupado por un jpg guardado en un campo General

28/06/2005 - 15:39 por Josep Maria | Informe spam
Hola, tengo el siguiente problema:

Tengo un fichero jpg que ocupa físicamente 104K, el caso es que
agrego esa imagen JPG a un campo de tipo general (en una tabla que solo
tiene un registro con ese único campo), haciendo lo siguiente:

CREATE TABLE C:\Tabla.dbf (CAMPO G)
USE C:\TABLA IN 0 EXLUSIVE
APPEND BLANK
APPEND GENERAL CAMPO FROM C:\IMAGEN.JPG
USE

Si a continuación consulto por el explorador de archivos el tamaño del
archivo TABLA.DBF y TABLA.FPT me encuentro con la siguiente sorpresa:

Tamaño del archivo TABLA.DBF: 334 bytes
Tamaño del archivo TABLA.FPT: 4,350,016 bytes !!

Es decir, un archivo jpg que ocupa 105k al guardarlo como campo general en
una tabla me pasa a ocupar 4,5 Mb ... Cómo puede ser eso posible ? Hay alguna
forma de hacer que no ocupe tanto ?

He probado cambiando la linea del APPEND GENERAL por la siguiente, el
resultado es el mismo:

APPEND GENERAL CAMPO FROM C:\IMAGEN.JPG CLASS PBRUSH

Me da la impressión de que a pesar de ser un archivo jpg, internamente lo
guarda como bmp de 24 bits, però aun así tampoco me cuadra pues he editado la
imagen jpg con el Paint y la he guardado como BMP de 24 bits y me da un
tamaño de 1 Mb aprox., lo cual se queda aun muy lejos de los 4,5 Mb que ocupa
el archivo FPT.

Haciendo un PACK MEMO continua ocupando lo mismo, es decir, 4,5 Mb.

Preguntas similare

Leer las respuestas

#1 Victor B.
28/06/2005 - 19:05 | Informe spam
El problema es que con APPEND GENERAL, estás 'incrustando el objeto', por lo
que no solamente entra el JPG si no también la aplicación que tienes
relacionada con él. Se guarda `pues información de la aplicación que en tu
equipo está asociada con el objeto(PAINT)...
No se recomienda almacenar las imágenes en campos GENERAL debido a que
aumentan peligrosamente el tamaño de los FTP. La técnica que más se
recomienda es usar campos MEMO donde guardas la carpeta y nombre del archivo
de imagen, y la imagen se encuentra guardada en dicha carpeta...


Víctor Brasó
Desarrollador independiente

"Josep Maria" <Josep escribió en el mensaje
news:
Mostrar la cita
alguna
Mostrar la cita
la
Mostrar la cita
ocupa
Mostrar la cita
#2 M
28/06/2005 - 19:38 | Informe spam
Lo que podrias hacer es guardar en un campo tipo caracter la ruta del
archivo de imagen o en su caso
usar el nuevo tipo de dato BLOB que esta disponible en VFP9

Saludos.

Cruz
Merida, Yucatán, México

"Victor B." escribió en el mensaje
news:
Mostrar la cita
lo
Mostrar la cita
archivo
Mostrar la cita
mensaje
Mostrar la cita
en
Mostrar la cita
lo
Mostrar la cita
editado
Mostrar la cita
#3 Carlos Sanchez
29/06/2005 - 15:27 | Informe spam
Y como se haria en el caso de que fuera un sistema tipo cliente servidor, en
donde se debe guardar una imgen en una maquina remota ?
"Victor B." wrote in message
news:
Mostrar la cita
lo
Mostrar la cita
archivo
Mostrar la cita
mensaje
Mostrar la cita
en
Mostrar la cita
lo
Mostrar la cita
editado
Mostrar la cita
#4 Victor B.
29/06/2005 - 15:59 | Informe spam
En un sistema tipo 'cliente-servidor', supongo que conoces la ruta de la
máquina remota donde guardas los datos para acceder a ellos. De la misma
forma debes implementar una variable pública u otra forma(p.e., una
propiedad del objeto _SCREEN, las variables públicas son poco
recomendables), donde guardas la ruta de la carpeta donde guardas las
imágenes. Incluso, en las máquinas clientes podrías tener una carpeta
temporal, donde a través de funciones como ADIR y sentencias como COPY FILE
te traes las imágenes que el usuario queire ver, y compruebas si ya las
tiene la carpeta temporal y si miden lo mismo y tienen la misma fecha, para
en ese caso, mostrar la de la carpeta temporal. Así reduces el tráfico en la
red.


Víctor Brasó
Desarrollador independiente

"Carlos Sanchez" escribió en el mensaje
news:%
Mostrar la cita
en
Mostrar la cita
por
Mostrar la cita
tu
Mostrar la cita
solo
Mostrar la cita
general
Mostrar la cita
un
Mostrar la cita
que
Mostrar la cita
#5 Ana María Bisbé York
29/06/2005 - 16:53 | Informe spam
Hola Josep María:

Si tienes VFP 9.0 hay una excelente solución de Doug Hennig para convertir
el contenido de un campo general a un campo tipo Blob. Lo tienes en:
http://reportlistener.com/files


Saludos,

Ana
www.amby.net


"Josep Maria" <Josep escribió en el mensaje
news:
Mostrar la cita
alguna
Mostrar la cita
la
Mostrar la cita
ocupa
Mostrar la cita
Ads by Google
Search Busqueda sugerida