PDA

Ver la Versión Completa : ver todas las imagenes en Base de datos


emeritos
26-01-2015, 13:45:50
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í:


// 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
¿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.