GARANTIR DESCONTO

Fórum JPG ou JPEG no paradox #177151

24/08/2003

0

É possível salvar em Paradox arquivos de imagens no formato JPG ou JPEG? Caso, sim, como fazer?
Quem conseguir responder ficarei admirado e claro, muito agradecido!!
Pois já falei com alguns amigos e ninguém sabe como fazer!
Obs.: Só sei gravar no formato BMP.


Vanduarte

Vanduarte

Responder

Posts

24/08/2003

Mmtoor

facil demais caro amigo. O que mais utilizo é o seguinte:

Procedure Grava_Imagem_JPEG(Tabela:TTable; Campo:TBlobField;
Foto:TImage; Dialog:TOpenPictureDialog);
var BS:TBlobStream;
MinhaImagem:TJPEGImage;
Begin
Dialog.InitialDir := ´c:\temp´;
Dialog.Execute;
if Dialog.FileName <> ´´ Then
Begin
if not (Tabela.State in [dsEdit, dsInsert]) Then
Tabela.Edit;
BS := TBlobStream.Create((Campo as TBlobField), BMWRITE);
MinhaImagem := TJPEGImage.Create;
MinhaImagem.LoadFromFile(Dialog.FileName);
MinhaImagem.SaveToStream(BS);
Foto.Picture.Assign(MinhaImagem);
BS.Free;
MinhaImagem.Free;
Tabela.Post;
DBISaveChanges(Tabela.Handle);
End;
End;

procedure TForm1.Button1Click(Sender: TObject);
begin
Grava_Imagem_JPEG(TbClientes,TbClientesCli_Foto, Image1,
OpenPictureDialog1);
// TbClientes é o nome de alguma Tabela
// TbClientesCli_Foto é um variavel da tabela do tipo Blob
// Image1 é um componente
// OpenPictureDialog1 é o componente para abrir a figura
end;

pegou?
abraços
mmtoor2003
mmtoor2003@yahoo.com.br


Responder

Gostei + 0

25/08/2003

Olá;

Sou iniciante na programação em Delphi mas gostaria de contribuir com minha solução para um problema frequente: a inclusão e leitura de imagens jpg armazenadas em tabelas paradox.
Ao contrário do que se poderia fazer, não usei um componente DBimage para mostrar a imagem e sim um Image normal.
A grande dificuldade é fazer com que uma rotina leia a imagem armazenada num campo tipo Blob e a mostre numa Image diretamente. Com pouco mais de meia dúzia de linhas por procedimento e fazendo um simples malabarismo com a gravação de arquivos, acho que resolvi o problema.
A solução está em não tentar jogar as imagens diretamente para um componente de visualização (Image), mas sim gravar esta informação na forma de arquivo e logo em seguida carregá-la para o Image.

Complicado?

O progra usa uma tabela Paradox feita no DataBase Desktop com a seguinte estrutura:

[b:59d0ec45c0]Cod_foto[/b:59d0ec45c0]: guarda o código da foto, tipo autonumeração, chave primária da tabela;
[b:59d0ec45c0]Nome_foto[/b:59d0ec45c0]: guarda o nome da foto, tipo alfanumérico;
[b:59d0ec45c0]Imagem_foto[/b:59d0ec45c0]: guarda o arquivo da foto, tipo Graphic.

Depois é só criar o alias e partir para a programação no Delphi.
No Delphi, inicie uma aplicação nova e inclua os seguintes componentes:

[b:59d0ec45c0]Table1[/b:59d0ec45c0]: tabela que aponta para o arquivo do paradox criado pelo DataBase Desktop;
[b:59d0ec45c0]Datasource1[/b:59d0ec45c0]: distribui para os demais componentes a informação da Table1;
[b:59d0ec45c0]DBgrid1[/b:59d0ec45c0]: recebe as informações do Datasource1;
[b:59d0ec45c0]DBnavigator1[/b:59d0ec45c0]: Controla o Datasource1 e permite navegar por cada registro;
[b:59d0ec45c0]Image1[/b:59d0ec45c0]: vai receber “indiretamente” a imagem armazenada no campo Imagem_foto;
[b:59d0ec45c0]Button1[/b:59d0ec45c0]: este botão inclui uma imagem jpg no campo Imagem_foto do registro atual;
[b:59d0ec45c0]Button2[/b:59d0ec45c0]: este botão mostra na Image1 o conteúdo do campo Imagem_foto;
[b:59d0ec45c0]OpenPictureDialog1[/b:59d0ec45c0]: caixa de diálogo usada para selecionar a imagem a ser incluída no campo Imagem_foto;


A seguir, veja no código do meu programa um passo a passo com o comentário sobre cada linha.
Espero ter pelo menos contribuído com algo de útil na resolução do seu problema, se não, peço desculpas e espero que alguém com mais experiência possa ajudar.

Atenciosamente.
Moisés
moatha@terra.com.br




unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, DBCtrls, Grids, DBGrids, Db, DBTables, StdCtrls, Jpeg, ExtDlgs;
//Não esqueça de incluir Jpeg na Uses para habilitar a manipulação de imagens jpg

type
TForm1 = class(TForm)
Table1: TTable;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
DBNavigator1: TDBNavigator;
Button1: TButton;
Button2: TButton;
Image1: TImage;
OpenPictureDialog1: TOpenPictureDialog;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject); //Este botão abre uma caixa de diálogo para carregar a imagem a ser salva num campo da tabela
begin
OpenPictureDialog1.Execute; //Abre a caixa de diálogo
if OpenPictureDialog1.Filename <> ´´ then //Se a caixa retornou com um nome de arquivo então...
begin
Table1.Edit; //Abre a tabela Table1 para edição (escrita)
TBlobField(Table1.FieldByName(´Imagem_foto´)).LoadFromFile(OpenPictureDialog1.FileName); //Insere no campo Imagem_foto da Table1 o arquivo jpg indicado pela caixa de diálogo OpenPictureDialog1
Table1.post; //Grava as alteraçõs e fecha a tabela
end;
end;

procedure TForm1.Button2Click(Sender: TObject); // Este botão mostra a imagem armazeda na tabela
begin
Table1.Edit; // Abre a tabela para edição (leitura)
If not(TBlobField(Table1.FieldByName(´Imagem_foto´)).IsNull) then // Se o campo Imagem_foto do registro da tabela não está ´vazio´ para ser lido e visualizado, então...
begin
TBlobField(Table1.FieldByName(´Imagem_foto´)).SaveToFile(´c:\temp.jpg´); // Grava num arquivo temp.jpg a imagem armazenada no campo Imagem_foto. Como prórpio nome diz, este arquivo é temporário e será substituído a cada visualização...
Table1.Post; //Fecha a tabela
Image1.Picture.LoadFromFile(´c:\temp.jpg´); //Carrega o arquivo temp.jpg no componente Image1. Lembre-se que salvamos o conteúdo do campo Imagem_foto nesse arquivo.
end;
end;

end.


Responder

Gostei + 0

31/08/2003

Vanduarte

EM REFERENCIA A MENSAGEM DE CIMA:

Quer dizer que para colocar uma imagem jpg num banco de dados paradox é só fazer isso?

[b:b9ef35b8b1]TBlobField(Table1.FieldByName(´Imagem_foto´)).LoadFromFile(OpenPictureDialog1.FileName); //Insere no campo Imagem_foto da Table1 o arquivo jpg indicado pela caixa de diálogo OpenPictureDialog1 [/b:b9ef35b8b1]

Você jura que isso deu certo????


Responder

Gostei + 0

31/08/2003

Yankleber

Olá,

Não seria melhor, ao invés de armazenar a imagem [i:f4e90380e5]dentro[/i:f4e90380e5] do banco, simplesmente salvar o caminho (path) para a mesma?


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar