Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Imagen de una base de datos

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Imagen de una base de datos Responder citando

Para cargar una imagen almacenada en una base de datos utilizo la siguiente funcion:
void __fastcall TAEstimulos::CargarImagen()
{
if (TAEst->RecordCount>0)
{
TJPEGImage *JPeg;
TMemoryStream *Corriente;
JPeg = new TJPEGImage;
Corriente = new TMemoryStream;
static_cast <TGraphicField *>(TAEstEstimulo)->SaveToStream(Corriente);
Corriente->Seek(0,soFromBeginning);
JPeg->LoadFromStream(Corriente);
Imagen->Picture->Assign(JPeg);
Corriente->Free();
JPeg->Free();
}
}

Lo que pasa que solo me carga los archivos que tengan extensión .JPEG y yo queria que me aceptase cualquier archivo de imagen. Que tengo que hacer parq que me carge cualquier archivo de imagen por ejemplo con extension .bmp???
Luego otra duda es como hago para que en un TImagen despues de que cargo una imagen me vuelva a aparecer en blanco??Es decir que se me borre la imagen cargada
Volver arriba
Mensaje    Asunto: Responder citando

¡Hola!

Para cargar un JPG has creado un objeto de la clase TJPEGImage. Para cargar un BMP utiliza la clase TBitmap. Mira en la ayuda de Builder sus propiedades y métodos.
Para quitar una imagen de un control TImage es:

Image1->Picture = NULL;

Espero haberte ayudado. Salu2 8^)
Volver arriba
Mensaje    Asunto: Responder citando

Y no ay ninguna forma de utilizando una sola funcion que me pueda cargar todo tipo de archivos de imagen???? Es que al ejecutar el dialogo para abrir archivos me deja abrirlos de cualquier tipo y ademas necesito que me guarde cualquier tipo de archivo de imagen??o sino como hago para que solo me deje uardar archivos de un solo formato???pero es que necesitaba que me guardase cualquie tipo de archivo.
Volver arriba
Mensaje    Asunto: Responder citando

¡Hola!

Si usases ficheros en vez de Streams, podrías utilizar el método "LoadFromFile" de la propiedad "Picture" del control TImage. Este control permite usar jpg y bmp como poco. Gifs no permite. Otros formatos de imagen no los he probado. Pero usándo Streams necesitas usar las clases para tratar imágenes (TJPEGImage, TBitmap, etc).
Prueba a pasar a un fichero temporal las imágenes que vayas cogiendo de la base de datos.

Salu2.
Volver arriba
Mensaje    Asunto: Responder citando

Me puedes poner un pequeño ejemplo de como tengoq ue hacerlo es que no me aclaro mucho con lo que me dices???POR FAVOR PONME UN EJEMPLOO.
Volver arriba
Mensaje    Asunto: Responder citando

¡Hola!

Teniendo un archivo .jpg en la ruta "c:\Imagenes\" con nombre foto.jpg, quedaría así:

Image1->Picture->LoadFromFile("c:\\Imagenes\\foto.jpg");

Para guardar una imagen a disco sería:(previamente cargada en el control de tipo TImage)

Image1->Picture->SaveToFile("c:\\Imagenes\\foto2.jpg");

Yo te aconsejo que guardes las imágenes en ficheros independientes de la base de datos, ya que guardarlos en una base de datos suele traer problemas (aunque no tiene que ser así necesariamente). Yo siempre me creo un directorio en el que guardar imágenes.
Como ves, la dificultad es mínima, Builder te lo pone fácil.

Espero que esto te sirva. Si no, dímelo. Salu2
Volver arriba
Mensaje    Asunto: Responder citando

Pero y en la base de datos que es lo que almaceno???
A ver si me entero tu me dices ke las imagenes las salve a una carpeta, y que las carge como tu dices pero y que guardo en la base de datos en el campo que tenia que guardar la imagen???
Volver arriba
Mensaje    Asunto: Responder citando

Obviamente guardas en un campo texto, la direccion donde esta guardada la imagen y el nombre de la mima (el nomre lo puedes foramr con la fecha y un numero consecutivo por ejemplo)


Es deicr en un a carpete del disco duro tendrias las imagenes y el la bd solo als direcciones

Saludos
Volver arriba
Mensaje    Asunto: Responder citando

¡Hola!

Perdona que no te haya contestado antes (en casa no tengo internet, por ahora).
De todas formas, la respuesta que te han dado es buena. Yo hago eso o, si puedo, guardo las imágenes de tal forma que no me haga falta almacenar su dirección, con lo que me ahorro un campo en la base de datos. Por ejemplo, guardar siempre las imágenes en un directorio concreto (p.e., la ruta del ejecutable más el nombre "Fotos") y construir el nombre del archivo con algún identificador unívoco (p.e., el DNI del cliente). De esta forma, si accede a la aplicación el usuario "3jd5", se que su foto va a ser:

ExtractFilePath(Application->ExeName) + "Fotos\\3jd5.jpg" (por ejemplo)

Salu2.
Volver arriba
Mensaje    Asunto: Perfecto sus respuestas Responder citando

Pero todo esta bien con LoadFromFile, pero cuando cargo una imagen con el OpenDialog, bien, guardo en la base de datos...
ExtractRelativePath(Application->ExeName,OpenImageDialog1->FileName);
y me saca la ruta relativa, no hay , problema lo que pasa es que cuando lo hago varias veces como que el puntero de Image->LoadFromFile, se mueve y dice que no puede cargar la imagen... ejemplo

(<-) puntero del opendialog o algo asi

images
logos
image1.bmp
image2.bmp
programa
exe <-

la primera vez esta asi, pero cuando cargo ../images/logos/image1.jpeg
queda como asi

images
logos <-
image1.bmp
image2.bmp
programa
exe

entonces al cargar una imagen en la misma carpeta como image2 me dice que no puede abrir abrir el archivo

Gracias Wink
_________________

Trigger Wink
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.