Arsip: menyimpan file gambar jpeg

 
user image
more 18 years ago

dermawan

Saya sudah menemukan caranya... Menggunakan Komponen ADOQuery. Saya gak nemu di forum ini sih, nemu di link apa saya lupa. Tapi ini saya post saja coding-nya, bagi yang memerlukan: with ADOQuery1 do begin Close; SQL.Text := 'select * from <Nama Table> where ID = 0'; // kode di atas untuk select dari tabel yang menghasilkan nol RecordCount, hanya untuk buka saja. Open; Insert; Fields[0].Value := <nilai yang dimasukkan ke field pertama dari tabel>; (Fields[1] as TBlobField).LoadFormFile('<nama file gambar>'); // kedua baris di atas untuk mengisi field-field pada tabel // bisa juga gunakan FieldByName('<nama field>'), tapi saya prefer pakai index --> lebih cepat, pernah dicoba Post; Close; end; Semoga membantu :) Dermawan
user image
more 18 years ago

grounders

ini merupakan alternatif menggunakan ADOQuery untuk melakukan insert gambar atau update gambar. Sebagai gambaran saya menggunakan dua tabel barang dimana satu tabel untuk menyimpan data barang dan yang satunya khusus untuk menyimpan gambar dari barang tersebut. Relasi tabel one to one dengan kunci kdbarang

procedure TfmGoodPicture.btSaveClick(Sender: TObject);
var
  Bookmark: TBookmark;
begin
if OpenPictureDialog1.Execute then
begin
  Bookmark := DM.TGood.GetBookmark;
  DM.TGood.DisableControls;
  ms := TMemoryStream.Create;
  try
   ms.LoadFromFile(OpenPictureDialog1.FileName);
   try
   if not DM.MYSQL.InTransaction then DM.MYSQL.BeginTrans;
    with DM.ADOQuery2 do
    begin
      with SQL do
      begin
        Clear;
        Add('select count(kdbarang) from goodgambar where kdbarang = :kb');
      end;
      Prepared;
      Parameters.Items[0].Value := DM.TGoodKDBARANG.AsString;
      Open;
    end;
    if DM.ADOQuery2.Fields[0].AsInteger > 0 then
    begin
      with DM.ADOQuery1 do
      begin
        with SQL do
        begin
          Clear;
          Add('update goodgambar set picture=:pic where kdbarang = :kb');
        end;
        Prepared;
        Parameters.Items[0].LoadFromStream(ms, ftBlob);
        Parameters.Items[1].Value := DM.TGoodKDBARANG.AsString;
        ExecSQL;
      end;
    end
    else
    begin
      with DM.ADOQuery1 do
      begin
        with SQL do
        begin
          Clear;
          Add('insert into goodgambar(kdbarang,picture) values(:kb,:pic)');
        end;
        Prepared;
        Parameters.Items[0].Value := DM.TGoodKDBARANG.AsString;
        Parameters.Items[1].LoadFromStream(ms, ftBlob);
        ExecSQL;
      end;
    end;
   DM.MYSQL.CommitTrans;
   DM.TGood.Close;
   DM.TGood.Open;
   DM.TGood.GotoBookmark(Bookmark);
   except
   DM.MYSQL.RollbackTrans;
   ShowMessage('Penyimpanan data gagal');
   end;
  finally
    ms.Free;
    DM.TGood.EnableControls;
    DM.TGood.FreeBookmark(Bookmark);    
  end;
end;
end;
Dan kode di bawah untuk menampilkannya. Disini gambar yang digunakan dapat berkekstensi .bmp tau .jpg. Disini saya menggunakan ADOQuery yang saya beri nama QGAMBAR dengan SQL = SELECT PICTURE FROM GOODGAMBAR WHERE KDBARANG=:KB Dan kode ini terletak pada event onClick pada button

procedure TfmGoodPicture.btShowClick(Sender: TObject);
var
  bS  : TADOBlobStream;
  Pic : TJpegImage;
  Gmbr : TBitmap;
begin
 DM.QGAMBAR.Close;
 DM.QGAMBAR.Prepared;
 DM.QGAMBAR.Parameters.Items[0].Value := DM.TGOODKDBARANG.AsString;
 DM.QGAMBAR.Open;
 DM.QGAMBAR.First;
 if not DM.QGAMBARPICTURE.IsNull then
 begin
  bS := TADOBlobStream.Create(DM.QGAMBARPICTURE, bmRead);
  try
    Pic:=TJpegImage.Create;
    try
     try
     Pic.LoadFromStream(bS);
     ADOImage.Picture.Graphic:=Pic;
     except
             bs := TADOBlobStream.Create(DM.QGAMBARPICTURE, bmRead);
             Gmbr := TBitmap.Create;
             try
               try
                  Gmbr.LoadFromStream(bs);
                  ADOImage.Picture.Graphic:=Gmbr;
               except
                   ADOImage.Picture := Nil;
               end;
             finally
             Gmbr.Free;
             end;
     end;
    finally
     Pic.Free;
    end;
  finally
    bS.Free
  end;
 end
 else
 begin
   ADOImage.Picture := Nil;
 end;
end;
Semoga kode diatas bisa membantu... For bos ulil: perlu dibuat sebagai atrikel gak bos?
user image
user image
more 18 years ago

lord_kimm

@kaka-delphi: Refer : http://www.delphi-id.org/dpr/Article86.pas :lol:
Artikel itu emang nyolok file jpg ke database cuman di tu artkel bukan make Query tapi lewat tabel sedangkan dalam Thread ini yang ditanyakan bagaiaman cara memasukan file jpeg dalam database dgn Query.. :D
user image
more 18 years ago

skyblue

iyha saya juga masih bingung gimana klo pake query(masih pemula T_T).. udah cari di sini masih lum paham, bisa minta tolong kasi conth yang simpel nda yang make interbase.. thx sblmnya..
user image
more 18 years ago

kaka-delphi

lho ... bukannya sudah di jawab sama si grunders ... ? Kalo masih kurang jelas ... tinggal search di artikel juga ada kok ... http://pascal-id.org/dpr/Article110.pas
user image
more 18 years ago

budi_bunga

coba pake jpg diekspor ke text, lalu teksnya bila mau ditampilkan diekspor lagi ke jpg
more ...
  • Pages:
  • 1
  • 2
Share to

AI Forward

🚀 We're thrilled to partner with Alibaba Cloud for "AI Forward - Alibaba Cloud Global Developer Summit 2025" in Jakarta! Join us and explore the future of AI. Register now: https://int.alibabacloud.com/m/1000400772/
#AlibabaCloud #DeveloperSummit #Jakarta #AIFORWARD

Random Topic

Local Business Directory, Search Engine Submission & SEO Tools FreeWebSubmission.com SonicRun.com