Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   ver todas las imagenes en Base de datos (https://www.clubdelphi.com/foros/showthread.php?t=87579)

emeritos 26-01-2015 13:45:50

ver todas las imagenes en Base de datos
 
Hola Dilferos.

Necesito un compomente o como lo puedo hacer para ver de un golpe todas las imagenes de un fichero de una base de datos, algo asi como la rejilla pero solo ver imagenes. Despues haremos un tratamiento con ellas.

Gracias.

Casimiro Notevi 26-01-2015 15:19:16

¿Todas de golpe? ¿aunque haya cientocincuenta mil millones de imágenes?

duilioisola 26-01-2015 18:33:32

¿Cómo están guardadas las imágenes? (Campos blob? todas en la misma tabla?)
¿Qué formato de imágenes son?
¿Qué tamaño tienen las imágenes?
¿Qué tamaño quieres que tengan en la pantalla?

Se me ocurre que podrías leerlas una a una, reducirlas de tamaño y ponerlas en un ListView.

Yo lo hago así:

Código Delphi [-]
// Variables
tamano : integer;
ILGaleria: TImageList;

// Valores iniciales
tamano := 50;

procedure TDMGaleriaImagen.CargaImageList(Lista: TListView);
var
  Imagen : TImage;
  Item : TListItem;
  RDim : TRect;
begin
  // Borro lo que hay en la lista
  Lista.Clear;

  // Asigno el tamaño que van a tener las miniaturas
  ILGaleria.Clear;
  ILGaleria.Height := Tamano;
  ILGaleria.Width := Tamano;

  RDim.Left := 0;
  RDim.Top := 0;
  RDim.Right := ILGaleria.Height;
  RDim.Bottom := ILGaleria.Width;

  // Carga de imagenes
  Imagen := TImage.Create(Self);
  try
     with QMGaleriaImagen do
     begin
        Close;
        Open;
        First;
        // Recorro la galería de imagenes
        while not EOF do
        begin
           // Agrego un ítem al TListView
           Item := Lista.Items.Add;
           Item.Caption := QMGaleriaImagen.FieldByName('NOMBRE').AsString;
           Item.Data := Pointer(QMGaleriaImagen.FieldByName('CODIGO').AsInteger);

           // Cargo la imagen con el Blob que corresponda de la tabla de imagenes
           Imagen.Picture := nil;
           DMMain.RefrescarImagen(Imagen, QMGaleriaImagenCODIGO.AsInteger);

           // Modifico el tamaño de la imagen
           Imagen.Picture.Bitmap.Canvas.StretchDraw(RDim, Imagen.Picture.Graphic);
           Imagen.Picture.Bitmap.Height := ILGaleria.Height;
           Imagen.Picture.Bitmap.Width := ILGaleria.Width;

           // Asigno la imagen del ImageList al ítem de TListView
           Item.ImageIndex := ILGaleria.Add(Imagen.Picture.Bitmap, nil);

           Next;
        end;
        Close;
     end;
  finally
     Imagen.Free;
  end;
end;

emeritos 26-01-2015 19:02:36

¿Cómo están guardadas las imágenes? (Campos blob? todas en la misma tabla?) SI
¿Qué formato de imágenes son? jpg
¿Qué tamaño tienen las imágenes? tamaño original despues las puedo reducir
¿Qué tamaño quieres que tengan en la pantalla? pues en principio mucho más pequeñas y haciendo doble clic en ellas agrandarlas, es decir volcer a reducir el tamaño original como el 80% de la pantalla.


Muchas gracias probare la solucion que me has dado y te comentare.

Neftali [Germán.Estévez] 27-01-2015 12:12:22

Cita:

Empezado por emeritos (Mensaje 488151)
¿Qué tamaño quieres que tengan en la pantalla? pues en principio mucho más pequeñas y haciendo doble clic en ellas agrandarlas, es decir volcer a reducir el tamaño original como el 80% de la pantalla.

El problema de esto es que el tráfico de datos puede ser muy grande, dependiendo del tamaño real de las imágenes y de los registros a traer.
Creo que el tema del tamaño es porque tal vez te saldría a cuenta (si es que quieres acabar visualizando las imágenes) guardar una "copia en pequeño" (una miniatura) de cada imagen en la Base de Datos.
De esta forma, cuando te traes las imágenes en realidad lo que te traes son las "miniaturas" y sólo te traes la "imagen grande" cuando lo necesitas.


La franja horaria es GMT +2. Ahora son las 16:31:50.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi