Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Gráficos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-09-2015
frandigo77 frandigo77 is offline
Miembro
NULL
 
Registrado: abr 2014
Posts: 17
Poder: 0
frandigo77 Va por buen camino
Error al guardar una Imagen JPG en un clientdataset

Hola buenas foro, se van solucionando problemas..
Pues tengo uno que llevo timepo sin podr resolver y que deje en el tintero y ahora necesito solucionarlo y me produce
un error (Bitmap image is not valid). Utilizo Mysql y un campo LONGBLOB.

El error salta cuando realizo la asignacion al campo del dataset, el código es el siguiente:

Código Delphi [-]
procedure TdlgPersonal.acCargarFotoExecute(Sender: TObject);
var
  fs : TMemoryStream;
  imgJPG : TJpegImage;
begin
  if OpenPictureDialog1.Execute then
  begin
    imgJPG := TJpegImage.create;
    fs := TMemoryStream.Create;
    try
      imgJPG.LoadFromFile(OpenPictureDialog1.FileName);
      imgJPG.SaveToStream(fs);
      fs.Seek(0, soFromBeginning);
      try
        cxDBImage1.Picture.Assign(imgJPG);
        dmRPK03.cdsPersonaFoto.LoadFromStream(fs);
      finally
        fs.free;
      end;
    except
      on E : Exception do
      begin
        MessageDlg('Asegúrese de que la imagen seleccionada es de ' +
           ' tipo JPEG con formato correcto. ' + chr(13) + chr(13) +
           'El error concreto: ' + E.ClassName + ': ' +
           E.Message, mtError, [mbOK], 0);
      end;
    end;
  end;
end;

Gracias..

Última edición por frandigo77 fecha: 25-09-2015 a las 13:07:39. Razón: Si alquien puede echarme una mano
Responder Con Cita
  #2  
Antiguo 25-09-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola frandigo77.

No conozco el componente cxDBImage, pero creo que deberías trabajar directamente sobre el campo no sobre el componente, ejemplo:

Código Delphi [-]
uses Jpeg;

procedure TForm1.btnLoadImageClick(Sender: TObject);

 function IsJPEGFile(const FileName: string): Boolean;
 var
   buf: array [0..3] of Byte;
   FS : TStream;
 begin
   FS := TFileStream.Create(FileName, fmOpenRead);
   try
    FS.Read(buf, SizeOf(buf));
    Result:= (buf[0]=$FF) and (buf[1]=$D8) and (buf[2]=$FF) and (buf[3]=$E0);
  finally
    FS.Free;
  end;
 end;

var
  Jpg    : TJPEGImage;
  Pic    : TPicture;
begin
  if OpenPictureDialog1.Execute then
  begin
    if IsJPEGFile(OpenPictureDialog1.FileName) then
    begin
      Jpg := TJPEGImage.Create;
      Pic := TPicture.Create;
      try
        Jpg.LoadFromFile(OpenPictureDialog1.FileName);
        Pic.Bitmap.Width  := Jpg.Width;
        Pic.Bitmap.Height := Jpg.Height;
        Pic.Bitmap.Assign(jpg);

        // guardar imágen seleccionada en el campo correspondiente
        ClientDataSet1.Edit;
        TBlobField(ClientDataSet1.FieldByName('IMAGE')).Assign(Pic);
        ClientDataSet1.Post;
      finally
        Jpg.Free;
        Pic.Free;
      end;
    end
    else raise Exception.Create('El archivo no contiene una imágen .JPG válida');
  end;
end;

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 26-09-2015
frandigo77 frandigo77 is offline
Miembro
NULL
 
Registrado: abr 2014
Posts: 17
Poder: 0
frandigo77 Va por buen camino
Thumbs up

Hola ecfisa, gracias por tan rápida atención. Probé el código que enviaste y funciona pero al intentar guardar los cambios
aparece el siguiente error:

[MySQL][ODBC 5.3(a) Driver] MySQL server has gone away. y seguidamente una violación de acceso a memória.

He probado a reiniciar el servidor pero cada ver que intento enviar el registro con el jpg, falla.
El campo de la tablsa es del tipo LONGBLOB y tiene la propiedad defaiult as NULL.

Tiene que ser algun parametro de condfiguración del servidor

Si puedes echarme una mano desde aqui, genial, sino lo pongo en el foro correspondiente..
Responder Con Cita
  #4  
Antiguo 26-09-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.039
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Sigue aquí en este hilo y da más detalles.
Responder Con Cita
  #5  
Antiguo 26-09-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola frandigo77.

Revisa si en estos enlaces encontras solución a ese error:
Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
guardar datos correctamente con un ClientDataSet. novato_erick Varios 13 04-03-2016 16:32:13
Recuperar/Mostrar Imagen de ClientDataSet Beaker_ OOP 7 17-05-2012 18:43:44
Guardar datos del clientdataset a tabla sql gianfranco_tont Varios 6 21-02-2012 22:29:48
guardar los datos de un clientdataset lucas05 Varios 4 02-12-2011 01:18:03
Al guardar un clientDataSet en archivo no me mantiene los cambios David Conexión con bases de datos 1 12-08-2008 14:15:07


La franja horaria es GMT +2. Ahora son las 21:54:45.


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
Copyright 1996-2007 Club Delphi