TDBImage hanya mendukung format gambar Bitmap untuk menyimpan maupun menampilkan gambar dari database. Nah bagaimana caranya agar kita bisa menyimpan gambar format JPG.
Tutorial berikut ini akan memberikan gambaran bagaimana caranya menyimpan dan menampilkan gambar berformat JPG dari dalam database.
Gambar Format Bitmap
Untuk gambar format Bitmap, kita dapat mempergunakan komponen TDBImage yang di hubungkan dengan kolom gambar kita, dan secara otomatis delphi dapat menampilkan gambar atau menyimpannya ke dalam database.
Atau cara lainnya adalah mempergunakan komponen TImage untuk menampung gambar kita, dan untuk menyimpannya cukup dengan perintah:
Dataset.FieldByName('GAMBAR').Assign(img1.Picture);Untuk mengambil data dan menampilkannya ke komponen TImage cukup dengan perintah:
img1.Assign(Dataset.FieldByName('GAMBAR'));Gambar Format JPeg
Untuk gambar format JPG, kita tidak dapat langsung mempergunakan komponen TDBImage untuk menampung dan menampilkan gambar data database karena format JPEG tidak dikenal, namun kita masih bisa menampung dan menampilkan database dengan komponen TImage. Berikut ini cara menyimpan gambar ke database dan menampilkan gambar dari database ke komponen TImage
procedure SimpanGambar(ADataSet: TDataSet;
AImage: TPicture);
var
imgJpeg : TJPEGImage;
begin
if Assigned(ADataset) and Assigned(AImage) then
begin
imgJpeg := TJPEGImage.Create;
try
if (AImage.Graphic <> nil) and (AImage.Graphic.ClassNameIs('TJPegImage')) then
begin
imgJpeg.Assign(AImage.Graphic);
with imgJpeg do
begin
Grayscale := False;
CompressionQuality := 25;
ProgressiveEncoding := True;
Compress;
end;
ADataset.FieldByName('GAMBAR').Assign(imgJpeg);
end;
finally
FreeAndNil(imgJpeg);
end;
end;
end;
procedure TampilGambar(ADataSet: TDataSet;out AImage: TPicture);
var
imgJpeg : TJPEGImage;
begin
if Assigned(ADataSet) then
begin
imgJpeg := TJPEGImage.Create;
try
if not ADataSet.FieldByName('GAMBAR').IsNull then
if TBlobField(ADataSet.FieldByName('GAMBAR')).BlobSize > 0 then
begin
imgJpeg.Assign(ADataSet.FieldByName('GAMBAR'));
with imgJpeg do
begin
PixelFormat := jf24Bit;
Scale := jsFullSize;
Grayscale := False;
Performance := jpBestQuality;
Smoothing := True;
ProgressiveDisplay := True;
end;
AImage.Bitmap.Assign(imgJpeg);
end;
finally
FreeAndNil(imgJpeg);
end;
end;
end;
Pada contoh diatas, terdapat 2 prosedur, yang pertama adalah untuk menyimpan gambar ke database, dan yang kedua adalah untuk mengambil dan menampilkan gambar dari database.
Pengaturan properti dari JPeg, dapat dilihat pada help delphi dengan keyword TJPEGImage
cara lain lagi :
Biasanya
kita kalau nmenyimpan gambar pada delphi akan berbentuk bitmap, nah
jika ingin menyimpan kita bisa menggunakan teknik ini
.:. Steep
yang dilakukan adalah buat coding ini .:.
uses jpeg;
uses jpeg;
procedure
TForm1.Button1Click(Sender: TObject);
var
Jpg: TJpegImage;
Stream: TMemoryStream;
begin
Jpg := nil;
Stream := nil;
try
var
Jpg: TJpegImage;
Stream: TMemoryStream;
begin
Jpg := nil;
Stream := nil;
try
// Create a
JPEG image and load it from a file
Jpg :=
TJpegImage.Create;
Jpg.LoadFromFile(‘test.jpg’);
Jpg.LoadFromFile(‘test.jpg’);
// Create a stream
and save the image to the stream
Stream :=
TMemoryStream.Create;
Jpg.SaveToStream(Stream);
Stream.Position := 0;
Table1.Append;
Jpg.SaveToStream(Stream);
Stream.Position := 0;
Table1.Append;
// Load the
Blob field from the stream
TBlobField(Table1.FieldByName(‘Graph’)).LoadFromStream(Stream);
Table1.Post;
except
jpg.Free;
Stream.Free;
raise;
end;
jpg.Free;
Stream.Free;
end;
except
jpg.Free;
Stream.Free;
raise;
end;
jpg.Free;
Stream.Free;
end;
To display a
JPEG image stored in a Blob field in a TImage control, we
can use a code like the following for example in an AfterScroll event:
can use a code like the following for example in an AfterScroll event:
procedure
TForm1.Table1AfterScroll(DataSet: TDataSet);
var
Stream: TMemoryStream;
Jpg: TJpegImage;
begin
Jpg := nil;
Stream := nil;
try
var
Stream: TMemoryStream;
Jpg: TJpegImage;
begin
Jpg := nil;
Stream := nil;
try
// Create a
stream and load the contents of the Blob field
Stream :=
TMemoryStream.Create;
TBlobField(Table1.FieldByName(‘Graph’)).SaveToStream(Stream);
if Stream.Size > 0 then begin
TBlobField(Table1.FieldByName(‘Graph’)).SaveToStream(Stream);
if Stream.Size > 0 then begin
// Create a
JPEG image and load it from the stream
Jpg :=
TJpegImage.Create;
Stream.Position := 0;
Jpg.LoadFromStream(Stream);
Stream.Position := 0;
Jpg.LoadFromStream(Stream);
// Assign
the JEPG image to the Picture property of an Image
Image1.Picture.Assign(Jpg);
end else
Image1.Picture.Assign(nil);
except
Image1.Picture.Assign(nil);
end;
jpg.Free;
Stream.Free;
end;
Image1.Picture.Assign(nil);
except
Image1.Picture.Assign(nil);
end;
jpg.Free;
Stream.Free;
end;
Memasukkan gambar berformat Bitmap atau gambar berformat JPG/JPEG ke Database Access dengan Delphi , Serta Menampilkan gambar berformat Bitmap atau gambar berformat JPG/JPEG dari Database Access dengan Delphi.
Memasukkan gambar berformat
Bitmap atau gambar berformat JPG/JPEG ke Database Access dengan Delphi , Serta
Menampilkan gambar berformat Bitmap atau gambar berformat JPG/JPEG dari
Database Access dengan Delphi.
Bagi pemula… memasukkan gambar ke
dalam database Access serta menampilkan gambar dari dalam database adalah
pekerjaan yang tidak semudah mengolah data text, sedangkan memasukkan
gambar ke dalam database serta menampilkannya adalah hal yang seharusnya
dikuasai oleh programmer delphi..
Sebagai contoh simple adalah
aplikasi di bawah ini..
Fungsi nya me load gambar bitmap
dari folder,
lalu menampilkannya ke komponen
image
Langkah selanjutnya adalah
menyimpannya ke dalam database
Langkah terakhir adalah
menampilkannya ke komponen image dari database… tampilannya adalah sebagai
berikut :