Recentemente, depois de ver dois artigos sobre o CSDN sobre "acessar arquivos JPEG ao SQLServer em Delphi", senti que o método descrito nele é desejável, mas é bastante demorado. Confiável, não ouso gostar sozinho, estou disposto a publicá -lo e compartilhá -lo com todos. O teste foi aprovado no Delphi7.0+Win2000+SQLServer 2000 e é bom.
Solução:
1. A chave é converter dinamicamente o arquivo JPEG aberto em um objeto TBITMAP e exibi -lo no objeto de tempo;
2. Envie a imagem exibida para o banco de dados.
Neste exemplo, uma tabela de exemplo de teste foi estabelecida no SQLSERVER2000: Exame (XM Char (10), imagem fotográfica);
Código fonte do programa:
Unidade Savepic;
interface
usos
Janelas, mensagens, sysutils, variantes, classes, gráficos, controles, formulários,
Diálogos, extdlgs, extctrls, dbctrls, grades, dbgrids, db, adodb, botões,
Stdctrls, jpeg;
tipo
Tform1 = classe (tform)
Speedbutton1: TspeedButton;
Adoconnection1: Tadoconnection;
Tabela1: Tadotável;
DataSource1: TDataSource;
DbGrid1: tdbGrid;
DBIMAGE1: TDBIMAGE;
Image1: Timage;
Speedbutton2: TspeedButton;
OpenPictUredialog1: TOPENPITURADELOG;
Label1: Tlabel;
Label2: tlabel;
Edit1: TEDIT;
Speedbutton3: TspeedButton;
Procedimento Speedbutton2Click (remetente: Tobject);
Procedimento Speedbutton1Click (remetente: Tobject);
Procedimento Speedbutton3Click (remetente: Tobject);
Privado
{Declarações privadas}
público
{Declarações públicas}
fim;
var
Form1: TForm1;
Implementação
{$ R *.dfm}
procedimento tForm1.SpeedButton2Click (remetente: TObject);
var
BMP1: TBITMAP;
JPG1: TJPEGIMAGE;
Começar
OpenPictUredialog1.DefaultExt: = GraphIcxExtension (TJPEGIMAGE);
Se openPictUredialog1.Execute então
Começar
bmp1: = tbitmap.create;
jpg1: = tjpegimage.create;
tentar
jpg1.loadFromFile (OpenPictureIlog1.FileName);
bmp1.assign (jpg1);
Image1.picture.bitmap.assign (BMP1);
Finalmente
jpg1.free;
bmp1.free;
fim;
fim;
fim;
Procedimento TForm1.SpeedButton1Click (remetente: TObject);
Começar
tabela1.open;
Tabela1.Insert;
tabela1.fieldbyName ('xm'). Asstring: = edit1.text;
Tabela1.FieldByName ('Photo'). Atribuir (Image1.Picture);
tabela1.post;
Tabela1.Refresh;
fim;
fim.