Alternatif menyimpan gambar dengan Delphi 7

Alternatif menyimpan gambar dengan Delphi 7 adalah tutorial solusi penyimpanan gambar dengan tidak secara langsung menyimpan gambar ke dalam database, lalu bagaimana? Ya, kita cukup menyimpan nama filenya saja sedangkan file aslinya akan kita konversi ke format Bitmap kemudian kita simpan ke lokasi tertentu ke dalam folder, di sini saya simpan di lokasi aplikasi exe berada.

Lihat tutorial sebelumnya: Menyimpan gambar ke database menggunakan Delphi

Database alternatif menyimpan gambar

Database yang saya gunakan di sini adalah database access dengan format 2003, langsung saja kita buat databasenya dengan kriteria sebagai berikut :

Nama Databasedb.mdb
Nama Tabeltb_foto
– – – – – – – – – – – – – – – – – – – – – –
Nama fieldData Tipe
IDAutoNumber
namaText
namafilefotoText

Sehingga jadinya akan tampak seperti gambar ini :
Tabel untuk alternatif menyimpan gambar delphi

Sekarang buat folder dengan nama “file-fotonya-di-sini-ya” tanpa tanda petik tentunya dilokasi penyimpanan projek delphi anda seperti punya saya nih :
Folder alternatif penyimpanan gambar
Folder tersebut bertujuan untuk menyimpan gambar yang akan diinputkan nantinya.

Sama seperti tutorial sebelumnya, sekarang yang harus kita lakukan adalah menambahkan komponen ke form, dengan komponen dan propertinya sebagai berikut:

Nama KomponenProperti
ADOConnection1LoginPrompt = False
Buat koneksinya dengan cara klik ganda pada komponen ADOConnection1 kemudian klik Build->Pilih : Microsoft Jet 4.0 OLE DB Provider->Carilah lokasi databasenya->Ok->Ok
ADOQuery1Connection = ADOConnection1
CursorType = ctStatic
Active = True
DataSource1DataSet = ADOQuery1
DBGrid1ReadOnly = True
DataSource = DataSource1
Kita akan menampilkan field “nama” saja, untuk itu klik kanan DBGrid1->Columns Editor. Lihat gambar di bawah, klik 1->Isi sesuai 2 dan 3. Dbgrid Column Editor
OpenPictureDialog1Filter = All (*.jpg;*.jpeg;*.bmp)|*.jpg;*.jpeg;*.bmp|JPEG Image File (*.jpg)|*.jpg|JPEG Image File (*.jpeg)|*.jpeg|Bitmaps (*.bmp)|*.bmp
Label1Caption = Nama
Edit1Text = ” (kosongkan)
Image1Stretch = True
Button1Caption = Cari gambar dan simpan

Kode-kode program alternatif menyimpan gambar pada Delphi

Selanjutnya kita akan menulis barisan kode programnya. Tambahkan sedikit baris kode berikut pada bagian uses :

Pada bagian type tambahkan barisan kode berikut :

Tambahkan juga procedure berikut di bawah implementation :

Kode Button klik

Sekarang klik ganda button yang ada pada form dan gantikan kodenya dengan yang di bawah ini :

Kode OnCellClick

Tambahkan even OnCellClick dengan kode sebagai berikut :

Seluruh kode program Delphi alternatif meyimpan gambar

Nah berikut kode lengkapnya :

Catatan Akhir:

Jika masih ada yang belum dimengerti mengenai tulisan di atas, silahkan tanya di bagian komentar di bawah ya. Supaya mendapat notifikasi jika jawabannya dibalas silahkan centang pilihan "Beri tahu saya komentar baru melalui email" sebelum mengirim komentar.

Catatan Belajar juga hadir di Facebook, dukung tulisan kami dengan klik tombol suka ini ya:

Sekian, semoga tulisan dengan judul Alternatif menyimpan gambar dengan Delphi 7 ini bermanfaat bagi kita semua.

Salam penulis, Ivo Idham Perdameian

38 thoughts on “Alternatif menyimpan gambar dengan Delphi 7

Add yours

  1. operand type clash:image is incompatible with text

    salah dimana mas?

    pke ms sql,type datanya juga sudah text

    procedure Tf_mkaryawan.CmdsimpanClick(Sender: TObject);
    var
    //deklarasi stream
    foto:tmemorystream;
    var gambar : TMemorystream;
    List: TStrings;
    n : byte;
    namafotobaru : string;
    begin
    if OpenPictureDialog1.Execute then begin

    List := TStringList.Create;
    convertobmp(OpenPictureDialog1.FileName);
    gambar := TMemorystream.Create;
    Image1.Picture.Graphic.SaveToStream(gambar);
    qmkaryawan.SQL.Clear;
    qmkaryawan.SQL.Add(‘exec tsimpankar :kode,:nama,:tgl,:status,:foto’);
    qmkaryawan.Prepared;
    qmkaryawan.Parameters.ParamByName(‘kode’).Value:=txtkodekar.Text;
    qmkaryawan.Parameters.ParamByName(‘nama’).Value:=txtnamakar.Text;
    qmkaryawan.Parameters.ParamByName(‘tgl’).Value:=txttgl.Text;
    if txtstatus.Checked=true then qmkaryawan.Parameters.ParamByName(‘status’).Value:=’1′
    else
    qmkaryawan.Parameters.ParamByName(‘status’).Value:=’0′;

    qmkaryawan.Parameters.ParamByName(‘foto’).LoadFromStream(gambar,ftBlob);

    if Assigned(Image1.Picture.Graphic) then begin
    n := ExtractStrings([‘.’],[],PChar(ExtractFileName(OpenPictureDialog1.FileName)),List);

    namafotobaru := StringReplace(ExtractFileName(OpenPictureDialog1.FileName), ‘ ‘, ‘_’, [rfIgnoreCase, rfReplaceAll]);
    namafotobaru := StringReplace(namafotobaru, ‘.’, ‘_’, [rfIgnoreCase, rfReplaceAll]);
    namafotobaru := StringReplace(namafotobaru, ‘_’ + List[n-1], ‘.bmp’, [rfIgnoreCase, rfReplaceAll]);

    Image1.Picture.SaveToFile(ExtractFilePath(ParamStr(0)) + ‘filefoto’ + namafotobaru);
    qmkaryawan.Parameters[1].Value := namafotobaru;
    List.Free;

    end;

    end;

    qmkaryawan.ExecSQL;

    tampilawal;
    tampildata;
    end;

          1. ini kodingnya gan,…

    1. Yang errornya dibagian mana?
      Oke saya tebak saja ya?
      Pertama
      Pada procedure TFormPenduduk.tampildata; terdapat kode begini

      GridPenduduk.Columns[2] diganti menjadi GridPenduduk.Columns[0] saja.

      Kedua
      Pada procedure TFormPenduduk.BLoadClick(Sender: TObject); terdapat kode begini

      Coba ganti menjadi:

      Pada bagian:

      diganti menjadi:

      Ketiga
      Ada yang aneh pada kode om Abima, ditulis begini:

      Itu proses pembuatannya gimana? seharusnya Grid penduduk itu di clik trus pada event properties cari yang namanya event CellClick trus klik ganda disitu sehingga nanti kita akan dibawa ke jendela penulisan kode, baru kita tulis kode programnya.
      Jika caranya benar maka seharusnya nama prosedurnya menjadi:

      bukan

      Coba dibuat lagi dan perbaiki sehingga menjadi kode seperti ini:

      Kalau sudah beres, jangan lupa memberitahu kami trus dukung web kami dengan like facebook kami, tambahkan kami ke lingkaran Google+. Jangan lupa untuk membagikan/ share tutorial yang ada di CB(Catatan Belajar) ke teman-teman yang lainnya.

      Untuk informasi lebih lanjut tentang error ,silahkan baca diskusi kami dengan bung Arya di komentar Menyimpan gambar ke database menggunakan Delphi

      Sukses ya!.
      Salam.

  2. saya mau tanya kalau penyimpanan gambar pada direktori folder yang kita inginkan,,, bisa tidak kalau dibuatnya tanpa membuat database,,, terima kasih?

  3. maaf mas saya pendatang baru di delphi dan masih belajar belum ada pertanyaan saya.. komentar ni hanya di coba apakah bisa masuk tidak

      1. mas bisa tlong share komponen Twain? sya kesulitan mencari nya, dan tlong syntax penggunaan nya ya mas, butuh pencerahan 🙂

  4. mas sya mencoba menerapakan cara yang sama ini tapi untuk di input ke database SQL, terjadi error dengan pesan “Lost connection with MYSQL”, ap ada kesalahan dengan syntax ya mas? sya tdk mengubah syntax nya masih tetap sama dengan 2 parameter

    procedure TForm1.Button2Click(Sender: TObject);
    var gambar : TMemorystream;
    begin
    gambar := TMemorystream.Create;
    Image1.Picture.Graphic.SaveToStream(gambar);
    ADOQuery1.Close;
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Text := ‘insert into pict (nama,gambar) values (:p0, :p1)’;
    ADOQuery1.Parameters[0].Value := Edit1.text;
    ADOQuery1.Parameters[1].LoadFromStream(gambar,ftBlob);
    ADOQuery1.ExecSQL;
    tampildata();
    end;
    end.

    1. Editnya seperti biasa aja, tapi gambar yang lama dihapus dulu dari foldernya itu pake kode program DeleteFile(ExtractFilePath(ParamStr(0)) + 'file-fotonya-di-sini-ya' + namafoto) baru gambar yang barunya disimpan.

  5. Klo langsung Upload Jpg bisa tidak Gan? maslahnya ini berkaitan dengan kualitas Gambar..

    Kasusnya Seperti ini..

    Saya saat ini berniat men develop program delphi menggunakan database Mysql Server dan akan bersipat terpusat (Server).

    Pada Satu Klien, ada satu inputan storage mengharuskan input image .jpg hasil dr proses pengecekan.
    bagaimana caranya agar photo/gambar hasil pengecekan tersebut dapat tersimpan dalam database.
    (jika Gambar disimpan dalam Mysql langsung sebagai file BLOB kemungkinan menyebabkan kapasitas database akan besar, cara lain yaitu dengan menyimpan file gambar tersebut dalam sebuah folder tapi tersimpan di HD Server). Mohon petunjuk caranya..
    Kemudian, bagaimana cara kita hendak menampilkan file tersebut menggunakan aplikasi Windows Picture..

    Semoga Agan dapat membantu kekurang tahuan saya! Jazakumulloh.. Thx

    1. Kalau tutorial saya inikan cuma bersifat lokal mas tidak menggunakan server, tentu saja bisa saja dibuat seperti yang mas inginkan itu, namanya pemrograman itu tidak ada yang tidak bisa, setidaknya ada alternatif.

      Saya tidak bisa bantu kodenya, kecuali ada kesepakatan tertentu alias jualan, hehe… Tapi saya bisa tunjukan alurnya, dan harus mas pelajari.
      Pertama, buatkan validasi di sisi klien untuk mengecek gambarnya.

      Kedua, jika sudah divalidasi mas harus buat kode upload ke server dari sisi klien, sedangkan dari sisi server harus ada program induk untuk menerima unggahan gambar beserta data lainnya dan menyimpan gambar + data di server.

      ketiga, di program klien apabila user klik DBGrid, maka harus ada program yang mengunduh gambar, hasil unduhan harus mas simpan direktori khusus sehingga apabila user klik DBGrid program tidak usah mengunduh lagi jika sudah ada gambarnya. Cara menampilkan gambar seperti biasanya tinggal ambil gambar dari direktori penyimpanan di lokal user tadi.

      Kira2 begitu mas alurnya. Selamat belajar, sukses selalu.
      Salam admin,

      Catatan Belajar

  6. klo jpeg dan dari banyak file image kita ubah ke jpeg gmn mas..
    format y jpeg mas.. trus convert ke pdf tapi multiple gmn ya
    trus kita dapat nama file yg image otomatis ke apus

  7. maaf sebelumnya mas, mohon bimbingan dan solusiya soalnya ini terjadi error. saya juga inbox mas di fb “catatan belajar”. terima kasih sebelumnya

    procedure TFdata.convertobmp(filename: TFileName);
    Var
         OleGraphic              : TOleGraphic; //bagian ini yang error mas, mohon solusinya
         fs                       : TFileStream;
         Source                   : TImage;
         BMP                      : TBitmap;
    Begin

Tinggalkan Balasan

© 2017 oleh Catatan Belajar | Theme: Baskerville 2 by Anders Noren.

Up ↑