Sabtu, 26 April 2014

menyimpan gambar jpg dan jpeg kedalam database access pada delphi

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;
procedure TForm1.Button1Click(Sender: TObject);
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’);
// Create a stream and save the image to the stream
Stream := TMemoryStream.Create;
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;
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:
procedure TForm1.Table1AfterScroll(DataSet: TDataSet);
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
// Create a JPEG image and load it from the stream
Jpg := TJpegImage.Create;
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;

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 :

Get this widget!