Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Gráficos (https://www.clubdelphi.com/foros/forumdisplay.php?f=8)
-   -   Error al cargar jpg en TImage desde firebird (https://www.clubdelphi.com/foros/showthread.php?t=73074)

arturom 30-03-2011 12:06:22

Error al cargar jpg en TImage desde firebird
 
Hola,
desde la aplicación que estoy desarrollando puedo ver, a traves de un TImage, una fotofrafía que despues puedo guardar en una base de datos firebird sin problemas usando la siguiente sentencia (nótese que guardo la imagen directamente en la base de datos, no el path de la misma):
Código Delphi [-]
DM.ZQuery.ParamByName( 'Croquis' ).LoadFromFile( EnlaceCroquis, ftBlob );
Cuando quiero recuperar la imagen para editar la ficha que le corresponde uso la siguiente sentencia:
Código Delphi [-]
ImagenCroquis.Picture.Assign( DM.ZQuery.FieldByName( 'Croquis' ) );
ImagenCroquis es un componente estandar TImage.

El problema es que cuando es una imagen de tipo BMP no hay errores, pero si la imagen es JPG me da el error:
Código Delphi [-]
raised exception class EInvalidGraphics with message 'Bitmap image is not valid'
La unidad jpeg ya esta incluida en el uses.

¿Alguna idea al respecto?

Casimiro Notevi 30-03-2011 12:59:06

Esto es de un programita que ya tiene unos años, adapta la parte que te sirva de este procedure:

Código Delphi [-]
procedure TFarticulos.btVerImagenClick(Sender: TObject);
var
    CursorActual : TCursor;
    S : TStream;
begin
  inherited;
    S := nil;
    imgArticulo.Picture.Graphic := nil;
    //
    try
        // Conectar si no está conectada, de esta manera no se pierde tiempo
        //  en conectar/desconectar al entrar/salir del formulario, ya que si
        //  no usamos esta opción de ver imágenes, no conectará nunca.
        if not DMimagenes.BDimagenes.Connected then
        begin
            try
                CursorActual := Screen.Cursor;
                Screen.Cursor := crHourGlass;
                //
                ConectaBDimagen;
            finally
                Screen.Cursor := CursorActual;
            end;
        end;
        //
        DMimagenes.QRimagen.Close;
        DMimagenes.QRimagen.Params[0].AsInteger := DMarticulos.QRarticulosCODIGO.AsInteger;
        DMimagenes.QRimagen.Open;
    except
        On E:exception do
            Error( 8, 'artículo: '+DMarticulos.QRarticulosCODIGO.AsString );
    end;
    //
    if not (DMimagenes.QRimagenIMAGEN.IsNull) then
    begin
        try
            S := (DMimagenes.QRimagen).CreateBlobStream(DSimagenes.DataSet.FieldByName('IMAGEN') as TBlobField, bmRead);
            imgArticulo.Picture.Graphic := TJpegImage.Create;
            imgArticulo.Picture.Graphic.LoadFromStream( S );
            S.Free;
        except
            S.Free;
            imgArticulo.Picture.Graphic := nil;
            imgArticulo.Picture.Assign( imgNoDisponible.Picture );
        end;
    end
    else
        imgArticulo.Picture.Assign( imgNoDisponible.Picture );
    //
end;


La franja horaria es GMT +2. Ahora son las 16:08:05.

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