Menyimpan Gambar Format JPEG

March 17, 2006 at 6:23 pm | Posted in Code Samples | 7 Comments

by: Iwan CS

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.

7 Comments »

RSS feed for comments on this post. TrackBack URI

  1. Tapi ini hanya bisa untuk file-file yang kecil, sedangkan file dengan ukuran lebih besar keluar pesan “Invalid BLOB length”, bagaiman cara mengatasinya ..?

  2. Cara ini tidak berlaku untuk database MSAccess, untuk database MSAccess bisa mempergunakan cara seperti yang dijelaskan di:

    http://delphi.about.com/od/database/l/aa030601a.htm (bab utama)

    http://delphi.about.com/od/database/l/aa030601c.htm (sub-bab jpeg)

    Atas referensi bung Irwan Ardiansyah

    Contoh diatas diuji di database Firebird dan D7

  3. Ehm… pernah ada teman yang ingin menyimpan gambar dalam bentuk blob, tapi saya pikir ini pemborosan sumber daya pada database.

    Kalau saya lebih cenderung menggunakan database untuk menyimpan path gambar saja.

    Any comment?

  4. bagaimana caranya menyimpan path gambar pada sql server 2000 dan menampilkan nya kembali gambar yang kita simpan.mohon petunjuknya

    • Saranku, pisahkan nama file gambar dan path gambar. Yang di simpan di database sebaiknya hanya nama file gambar, path gambar bisa disimpan di tabel pengaturan atau di file konfigurasi sistem tentu dengan anggapan semua gambar di letakkan dalam 1 folder, sehingga data di database bisa lebih fleksibel.
      Prosedurnya, saat simpan gambar ke database, yang kita simpan adalah nama file gambar, lokasi gambar diabaikan.
      Kemudian saat kita harus load gambar, gunakan fungsi LoadFromFile dan ambil path gambar global dan tambahkan dengan nama file gambar yang di simpan di database.
      Semoga berhasil

      Iwan

      • Terima kasih atas jawabannya saudara iwan. tapi saya masih bingung kan adalah scriptnya bagaimana untuk simpan dan load gambar, karena script yang ada diatas saya gunakan di delphi kemudian error untuk database sql server 2000.jadi mohon bantuaannya untuk script nya boleh dikirim kan ke email saya.terima kasih.

  5. maaf,mau tanya. Ini Delphi dg database apa ya?
    kalau pakai database paradox,bawaan dari delphi 6 bagaimana coding penyimpanan gambarnya?
    trima kasih.


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Create a free website or blog at WordPress.com.
Entries and comments feeds.

%d bloggers like this: