| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Peruzzi Invitado
|
Publicado: Mie 21 May, 2003 4:48 pm Asunto: Imagen de una base de datos |
|
|
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 |
|
 |
tecno Invitado
|
Publicado: Mie 21 May, 2003 6:57 pm Asunto: |
|
|
¡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 |
|
 |
Peruzzi Invitado
|
Publicado: Mie 21 May, 2003 11:05 pm Asunto: |
|
|
| 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 |
|
 |
tecno Invitado
|
Publicado: Jue 22 May, 2003 10:26 am Asunto: |
|
|
¡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 |
|
 |
Peruzzi Invitado
|
Publicado: Jue 22 May, 2003 3:05 pm Asunto: |
|
|
| 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 |
|
 |
tecno Invitado
|
Publicado: Vie 23 May, 2003 10:29 am Asunto: |
|
|
¡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 |
|
 |
Peruzzi Invitado
|
Publicado: Vie 23 May, 2003 2:02 pm Asunto: |
|
|
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 |
|
 |
Invitado
|
Publicado: Sab 24 May, 2003 9:37 pm Asunto: |
|
|
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 |
|
 |
tecno Invitado
|
Publicado: Lun 26 May, 2003 11:52 am Asunto: |
|
|
¡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 |
|
 |
Trigger Lt


Registrado: 12 Ago 2002Mensajes: 88Ubicación: Barranquilla (Colombia)
|
Publicado: Lun 23 Jun, 2003 4:46 pm Asunto: Perfecto sus respuestas |
|
|
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  _________________
Trigger  |
|
| Volver arriba |
|
 |
|