Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   mostrar imagen (https://www.clubdelphi.com/foros/showthread.php?t=54860)

MARLON1 01-04-2008 20:38:12

mostrar imagen
 
hola foro aqui ando de nuevo pidiendo su ayuda, bueno lo que quiero hacer es mostrar una imagen que seleccciono mediante un OpenPictureDialog1(dlAbrir), lo unico que eh podido hacer es mostrar el fieldname del OpenPictureDialog1 con este codigo :
begin
dlAbrir.Filter :=
'Imagen JPEG (*.jpg)|*.jpg|';
if dlAbrir.Execute then
begin
txtRuta.Text := dlAbrir.FileName;

end;
end;
pero no la imagen, el fieldname lo muestra en un edit, me podrian ayudar en decirme como hacer que la imagen se muestre en un panel por favor.
por su ayuda gracias

Delphius 01-04-2008 20:41:12

Hola MARLON1,

¿probaste algo como?
Código Delphi [-]
if OpenPictureDialog1.Execute
  then Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);

Saludos,

Caral 01-04-2008 20:44:36

Hola
Código Delphi [-]
procedure TForm1.BuscaryAbrir1Click(Sender: TObject);
begin
    if OpenDialog1.Execute then
  begin
    CurrentFile := OpenDialog1.FileName;
    SaveStyles;
    Image.Picture.LoadFromFile(CurrentFile);
    RestoreStyles;
  end;
end;
Saludos

MARLON1 01-04-2008 20:59:27

gracias por la ayuda
 
Cita:

Empezado por Caral (Mensaje 276785)
Hola

Código Delphi [-]
procedure TForm1.BuscaryAbrir1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
CurrentFile := OpenDialog1.FileName;
SaveStyles;
Image.Picture.LoadFromFile(CurrentFile);
RestoreStyles;
end;
end;



Saludos

hola caral me podrias decir a que te refieres con CurrentFile por favor.

ixMike 01-04-2008 21:02:02

Cita:

Empezado por MARLON1 (Mensaje 276794)
hola caral me podrias decir a que te refieres con CurrentFile por favor.

Parece una variable string para almacenar el nombre del archivo (por si después la necesitas). "Current file" significa "archivo actual".

MARLON1 01-04-2008 21:04:54

Gracias A Todos Por Su Ayuda :d

Caral 01-04-2008 21:09:57

Hola
Significa que esta en el archivo actual.
Hay un ejemplo que trae Delphi esta en:
Demos, doc, GraphEx.
Ahi vas a poder darte cuenta de esto, de todos modos revisa este otro mas sencillo.
Código Delphi [-]
procedure TForm1.Open1Click(Sender: TObject);
Var
 Ruta: String;
begin
    Ruta:= Edit1.Text + '.Jpg';
    Image.Picture.LoadFromFile(Ruta);
end;
Saludos

MARLON1 01-04-2008 21:39:43

gracias por la ayuda
 
gracias a todos por la ayuda, ¿será que se puede guardar esa imagen el bd?, eh estado intentandolo tengo una tabla y en esa tabla tengo un campo tipo longblob, pero nose como guardar la imagen en la bd, uso mysql.Espero y me hechen otra manita gracias :D.
tengo este codigo pero me marca un error de sintaxis:

if Button3.ModalResult= MrOk then
begin
if Not FileExists (txtRuta.Text) then
begin
MessageDlg('La imagen no existe.',
mtWarning, [mbok], 0);
txtRuta.SetFocus;
exit;

end;
end;
// esta parte no guarda la imagen
query1.Close;
query1.sql.clear;
query1.sql.add ('insert into factseg8 img where id=:cla img=:imagen');
query1.ParamByName ('cla').Value:=DBEdit1.Text;
query1.ParamByName('imagen').DataType:=ftBlob; ¿podré tomar el dato del Image1?
query.open;

end;

Caral 01-04-2008 21:44:42

Hola
Codigo de ChackAll.
Código Delphi [-]

procedure TForm1.Button1Click(Sender: TObject);
var bmp: TBitmap; Stream: TStream;
begin
 if not OpenDialog1.Execute then Exit;

 bmp := TBitmap.Create;           // Creamos el objeto que "entiende" al Bitmap
 bmp.LoadFromFile(OpenDialog1.FileName);  // cargamos la imagen
 jpg.Assign(bmp);                 // signamos la imagen BMP al objeto del JPEG
 bmp.Destroy;                     // y liberamos el objeto. }

 ADOTable1.Open;                  // Abrimos la tabla
 ADOTable1.Insert;                // Insertamos una nueva tupla
 Stream := ADOTable1.CreateBlobStream(ADOTable1.FieldByName('photo'), bmWrite); // Asignamos el BLOB a un stream
 jpg.SaveToStream(Stream);        // y guardamos la imagen como JPEG (convertido), en el stream
 Stream.Destroy;                  // liberamos.
 ADOTable1.Post;                  // Guardamos.

end;
Saludos

Delphius 01-04-2008 21:45:07

MARLON1, primero debes considerar si es viable guardar la imagen en la base de datos... recuerda que esto hace crecer mucho a la base de datos. Todo dependerá del uso de la base de datos, la disponibilidad de almacenamiento, velocidad, etc..

Si realmente estás interesado en guardar imagenes, te recomiendo que utilices el buscador, se ha tratado en muchísimas ocasiones el tema. Busca por blob y/o TStream.

Saludos,

MARLON1 01-04-2008 21:47:59

gracias de nuevo a todos. tomaré muy en cuenta sus consejos.

MARLON1 02-04-2008 18:26:12

Cita:

Empezado por Caral (Mensaje 276815)
Hola
Codigo de ChackAll.

Código Delphi [-]

procedure TForm1.Button1Click(Sender: TObject);
var bmp: TBitmap; Stream: TStream;
begin
if not OpenDialog1.Execute then Exit;

bmp := TBitmap.Create; // Creamos el objeto que "entiende" al Bitmap
bmp.LoadFromFile(OpenDialog1.FileName); // cargamos la imagen
jpg.Assign(bmp); // signamos la imagen BMP al objeto del JPEG
bmp.Destroy; // y liberamos el objeto. }

ADOTable1.Open; // Abrimos la tabla
ADOTable1.Insert; // Insertamos una nueva tupla
Stream := ADOTable1.CreateBlobStream(ADOTable1.FieldByName('photo'), bmWrite); // Asignamos el BLOB a un stream
jpg.SaveToStream(Stream); // y guardamos la imagen como JPEG (convertido), en el stream
Stream.Destroy; // liberamos.
ADOTable1.Post; // Guardamos.

end;



Saludos

hola a todos ayer no me dio tiempo de probar este codigo que me proporciono caral, ahora que lo estoy probando me sale un error en el jpg, nose si falte declararlo lo declare pero me sigue saliendo ese error, ¿es una variable? o a que se reiere el jpg. Gracias

Nati1 02-04-2008 18:34:55

Código Delphi [-]

uses jpeg;

var jpg: TJPEGImage;

procedure TForm1.FormCreate(Sender: TObject);
begin
 jpg := TJPEGImage.Create;        // Creamos el objeto que "entiende" al JPEG

end;

procedure TForm1.Button1Click(Sender: TObject);
var bmp: TBitmap; Stream: TStream;
begin
 if not OpenDialog1.Execute then Exit;

 bmp := TBitmap.Create;           // Creamos el objeto que "entiende" al Bitmap
 bmp.LoadFromFile(OpenDialog1.FileName);  // cargamos la imagen
 jpg.Assign(bmp);                 // signamos la imagen BMP al objeto del JPEG
 bmp.Destroy;                     // y liberamos el objeto. }

 ADOTable1.Open;                  // Abrimos la tabla
 ADOTable1.Insert;                // Insertamos una nueva tupla
 Stream := ADOTable1.CreateBlobStream(ADOTable1.FieldByName('photo'), bmWrite); // Asignamos el BLOB a un stream
 jpg.SaveToStream(Stream);        // y guardamos la imagen como JPEG (convertido), en el stream
 Stream.Destroy;                  // liberamos.
 ADOTable1.Post;                  // Guardamos.

end;

MARLON1 02-04-2008 21:44:15

Cita:

Empezado por Nati1 (Mensaje 277056)
Código Delphi [-]

uses jpeg;

var jpg: TJPEGImage;

procedure TForm1.FormCreate(Sender: TObject);
begin
jpg := TJPEGImage.Create; // Creamos el objeto que "entiende" al JPEG

end;

procedure TForm1.Button1Click(Sender: TObject);
var bmp: TBitmap; Stream: TStream;
begin
if not OpenDialog1.Execute then Exit;

bmp := TBitmap.Create; // Creamos el objeto que "entiende" al Bitmap
bmp.LoadFromFile(OpenDialog1.FileName); // cargamos la imagen
jpg.Assign(bmp); // signamos la imagen BMP al objeto del JPEG
bmp.Destroy; // y liberamos el objeto. }

ADOTable1.Open; // Abrimos la tabla
ADOTable1.Insert; // Insertamos una nueva tupla
Stream := ADOTable1.CreateBlobStream(ADOTable1.FieldByName('photo'), bmWrite); // Asignamos el BLOB a un stream
jpg.SaveToStream(Stream); // y guardamos la imagen como JPEG (convertido), en el stream
Stream.Destroy; // liberamos.
ADOTable1.Post; // Guardamos.

end;



hola nati probe loque me dijiste pero ahora me sale un error Bitmap image is not valid ME PODRIAS AYUDAR. GRACIAS:)

Nati1 02-04-2008 21:57:15

En que lugar sale el error.
Ha colocado en el uses el jpg.
Esta cargando BMP o JPG directo.

MARLON1 03-04-2008 20:30:13

hola nati1
 
Cita:

Empezado por Nati1 (Mensaje 277118)
En que lugar sale el error.
Ha colocado en el uses el jpg.
Esta cargando BMP o JPG directo.

el error lo marca en el jpg

jpg.Assign(bmp);

gracias

MARLON1 03-04-2008 20:33:35

Cita:

Empezado por MARLON1 (Mensaje 277386)
el error lo marca en el jpg

jpg.Assign(bmp);

gracias

se me olvidaba si coloco en el uses jpeg me marca un error y no puedo correr el programa el error dice que el jpeg no esta definido.

Caral 03-04-2008 20:44:20

Hola
Revisalo completo:
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, DB, ADODB,  DBCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Image1: TImage;
    ADOConnection1: TADOConnection;
    ADOTable1: TADOTable;
    OpenDialog1: TOpenDialog;
    Memo1: TMemo;
    DBNavigator1: TDBNavigator;
    DataSource1: TDataSource;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure DBNavigator1Click(Sender: TObject; Button: TNavigateBtn);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses jpeg;

var jpg: TJPEGImage;

procedure TForm1.FormCreate(Sender: TObject);
begin
 jpg := TJPEGImage.Create;        // Creamos el objeto que "entiende" al JPEG

end;

procedure TForm1.Button1Click(Sender: TObject);
var bmp: TBitmap; Stream: TStream;
begin
 if not OpenDialog1.Execute then Exit;

 bmp := TBitmap.Create;           // Creamos el objeto que "entiende" al Bitmap
 bmp.LoadFromFile(OpenDialog1.FileName);  // cargamos la imagen
 jpg.Assign(bmp);                 // signamos la imagen BMP al objeto del JPEG
 bmp.Destroy;                     // y liberamos el objeto. }

 ADOTable1.Open;                  // Abrimos la tabla
 ADOTable1.Insert;                // Insertamos una nueva tupla
 Stream := ADOTable1.CreateBlobStream(ADOTable1.FieldByName('photo'), bmWrite); // Asignamos el BLOB a un stream
 jpg.SaveToStream(Stream);        // y guardamos la imagen como JPEG (convertido), en el stream
 Stream.Destroy;                  // liberamos.
 ADOTable1.Post;                  // Guardamos.

end;

procedure TForm1.Button2Click(Sender: TObject);
var  Stream: TStream;
begin
 ADOTable1.Open;                 // Abrimos la tabla
 ADOTable1.Last;                 // Nos vamos a la última tupla para ver la ultima imagen añadida.
 Stream := ADOTable1.CreateBlobStream(ADOTable1.FieldByName('photo'), bmRead); // Lo mismo que el anterior caso pero ahora en modo de escritura.
 jpg.LoadFromStream(Stream);     // Cargamos el BLOB al objeto JPEG
 Stream.Destroy;                 // liberamos...
 Image1.Picture.Assign(jpg);     // y asignamos la imagen al TPicture.

 end;

procedure TForm1.DBNavigator1Click(Sender: TObject; Button: TNavigateBtn);
var  Stream: TStream;
begin
 Stream := ADOTable1.CreateBlobStream(ADOTable1.FieldByName('photo'), bmRead); // Lo mismo que el anterior caso pero ahora en modo de escritura.
 jpg.LoadFromStream(Stream);     // Cargamos el BLOB al objeto JPEG
 Stream.Destroy;                 // liberamos...
 Image1.Picture.Assign(jpg);     // y asignamos la imagen al TPicture.

end;

end.
Recuerda que la foto tiene que ser BMP
Saludos

MARLON1 04-04-2008 20:22:45

Gracias
 
El error me lo marcaba por el formato de la imagen que lo tenia en jpg, y no le puse el jpg en el uses y funciono gracias.


La franja horaria es GMT +2. Ahora son las 14:15:49.

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