Delphi - Paradox y Jpg

 
Vista:

Paradox y Jpg

Publicado por Magbeto (29 intervenciones) el 20/02/2007 17:30:06
Hola a todos una ayudadita por favor...
Necesito cargar imagenes en una tabla de tipo paradox mi problema es que usando
un campo de tipo ftGraphic solo puedo cargar imagenes *.bmp

Table1.Edit;
Table1Img1.LoadFromFile('c:\imagen1.bmp');
Table1.Post;

¿como puedo cargar imagenes jpg?

espero alguien me pueda ayudar
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Paradox y Jpg

Publicado por nombre (106 intervenciones) el 20/02/2007 20:25:50
Yo en FireBird lo hago guardando la imagen en un campo Blob y el tipo de imagen que es en un campo Varchar, y después se puede visualizar con un TImage.Lo tengo para imágenes bmp y jpg.

Esto el único inconveniente que tiene es que si es una tabla con muchos registros (muchos miles o millones), el tamaño aumenta porque el gráfico queda cargado en la tabla, aunque si son jpg pequeños no aumenta demasiado, pero la ventaja es que no tienes que tener los ficheros de imágenes en ningún sitio una vez cargados, porque ya están en la tabla.

Desconozco si en Paradox puede funcionar lo mismo guardando la imagen en un campo Memo, y el tipo de imagen en uno tipo Caracter.

Si te interesa te paso el código y pruebas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Paradox y Jpg

Publicado por Magbeto (29 intervenciones) el 20/02/2007 21:10:17
Gracias por la ayuda pero no me funciona me marca "bitmap image is not valid" si puderas regalarme un pedazo de codigo de como lo haces tal vez no lo estoy haciendo de la manera correcta
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Paradox y Jpg

Publicado por nombre (106 intervenciones) el 20/02/2007 23:32:24
Tengo un TPopupMenu (PopupMenuFoto) con dos opciones: cargar foto (CargarFoto1) y borrar foto (BorrarFoto1)
Un TImage (ImageFoto) para visualizar la foto
Un TOpenPictureDialog(dlgOpenPicture)
DM. es un datamodulo
IBDS es un DataSet (componentes IBX)
FOTO es el nombre del campo Blob para guardar la image
FORMATOFOTO el campo varchar para guardar el formato (bmp, jpg)
DSAlumnosF es un DataSource y en su evento OnChange va el código de visualizar la foto al cambiar de registro
No te olvides añadir al uses del form la unit jpeg
uses
Windows, Messages, .... , ExtCtrls, Menus, ExtDlgs, Jpeg, DB;

CÓGIDO
-----------

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
//cargar foto
procedure TFDatos.Cargarfoto1Click(Sender: TObject);
var
  m, f: TStream;
  s: string;
begin
  //se abre picturedialog para cargar fichero foto que se coja
  if dlgOpenPicture.Execute then
    begin
      //modo edición
      DM.IBDSAlumnos.Edit;
      //stream a partir campo Blob que contendrá la imagen
      m:= DM.IBDSAlumnos.CreateBlobStream(DM.IBDSAlumnosFOTO, bmWrite);
      //stream para acceder al archivo gráfico
      f:= TFileStream.Create(dlgOpenPicture.filename, fmOpenRead);
      //copiar de un stream a otro
      m.CopyFrom(f, f.Size);
      //coger formato foto y ponerlo en campo correspondiente
      s:= AnsiUpperCase(ExtractFileExt(dlgOpenPicture.FileName));
      if s='.JPEG' then
        s:= '.JPG';
      DM.IBDSAlumnosFORMATOFOTO.AsString:= Copy(s,2,3);
      DM.IBDSAlumnos.Post;
      //destruir streams
      f.Free;
      m.Free;
    end
end;
 
--------
 
//borrar foto
procedure TFDatos.Borrarfoto1Click(Sender: TObject);
begin
  //borrar imangen
  ImageFoto.Picture.Assign(nil);
  //borrar foto del campo blob
  if (DM.IBDSAlumnos.State <> dsEdit) and (DM.IBDSAlumnos.State <> dsInsert) then
    DM.IBDSAlumnos.Edit;
  DM.IBDSAlumnosFOTO.Assign(nil);
  DM.IBDSAlumnos.Post;
  DM.IBDSAlumnos.Edit;
end;
 
-------
 
//mostrar imagen (evento on change de datasource)
procedure TFDatos.DSAlumnosFDataChange(Sender: TObject; Field: TField);
var
  m: TStream;
begin
  if DM.IBDSAlumnosFOTO.IsNull then
    //para registros sin foto poner imagen vacia
    ImageFoto.Picture := nil
  else
    begin
      if DM.IBDSAlumnosFORMATOFOTO.AsString = 'BMP' then
          //si es formato BMP
          ImageFoto.Picture.Graphic:= TBitmap.Create
      else if DM.IBDSAlumnosFORMATOFOTO.AsString = 'JPG' then
          //si es formato JPG
          ImageFoto.Picture.Graphic:= TJpegImage.Create
      else
        Exit;
      //copiar los datos desde la tabla con un stream
      m:= DM.IBDSAlumnos.CreateBlobStream(DM.IBDSAlumnosFOTO, bmRead);
      ImageFoto.Picture.Graphic.LoadFromStream(m);
      m.Free;
    end;
end;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Paradox y Jpg

Publicado por angel (1 intervención) el 06/11/2013 22:25:05
hace mucho que no me siento a programar y tengo este problema y no lo entiendo bien, tengo un Timage que ya tengo cargada la foto mediante una caja y me aparece en el Form pero el problema me viene cuando voy a darlo de alta en Paradox
quele tipo de campo le pongo en Paradox.... grafic, bytes, OLE ??

yo tengo este codigo
dm1.productos.fieldbyname('descripcion').asstring:=dbedit.text; OK
pero con la foto como lo hago????

dm1.productos.fieldbyname('foto1').asvariant:=image1.picture;

y asi no me deja
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Paradox y Jpg

Publicado por Franco (1 intervención) el 20/05/2014 21:27:11
EN EL FORMULARIO AGREGAS UN EDIT + IMAGE1 COMPONENTE OpenPictureDialog1 , LO QUE HAGO ES BUSCAR LA IMAGEN JPG LA CONVIERTO EN BMP SE GUARDA EN UN DIRECTORIO Y LUEGO SE GUARDA EN PARADOX 7

Use
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls, Buttons, Mask, FileCtrl, ComCtrls, Db, DBTables,
DBCtrls, ExtDlgs, ColorButton, JPEG;

procedure TAlta_Usuarios.ColorButton1Click(Sender: TObject);
var
MyJPEG : TJPEGImage;
MyBMP : TBitmap;
begin
MyJPEG := TJPEGImage.Create;
with MyJPEG do
begin
LoadFromFile(Edit9.text);
MyBMP := TBitmap.Create;
with MyBMP do
begin
Width := MyJPEG.Width;
Height := MyJPEG.Height;
Canvas.Draw(0,0,MyJPEG);
SaveToFile('Direccion donde se va a guardar ya convertida\'+Edit1.text+'.bmp');
Free;
end;
Free;
end;
Table1.Insert;
If Edit9.text = '' Then
else TGraphicField( Tabla.TUsuario.FieldByName('Foto')).loadFromFile('Direccion donde se va a guardar ya convertida\'+Edit1.text+'.bmp');
Table1.Post;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar