Jpeg画像のBlob項目への保存について


サンプー  2005-06-08 10:44:09  No: 15444

DL6、XPPro、BDEにてデータベースAppを製作中です。
フォームに、buttonを2個,Imageを1つおいて,Button1を押すとImageに画像を描画、Button2を押すとその画像をテーブルの’Photo’項目(属性はグラフィック・・データベースデスクトップにてテーブルは作成)に書き込むコードをQ&A等を参考に作成しました。
Jpeg形式の画像をテーブルに保存しようと考え、以下のコードを実行すると’ビットマップイメージが不正です’とのDBエラーが発生します。どなたかご教示下さい。


サンプー  2005-06-08 10:46:21  No: 15445

肝心のコードは、以下の通りです。
Use節には、JPEGを追加してあります。

procedure TFormtantouEntry.Button2Click(Sender: TObject);
  Var //呼込んだ画像をDBへ保存
      Strm : TBlobStream;
      Jpg: TJpegImage;
 begin
 Jpg := TJPEGImage.Create;
 Jpg.Assign(Image1.Picture.Graphic);
 DMSyaken.EmployTable.Edit;
 DMSyaken.EmployTable.Insert;
 Strm := TBlobStream.Create(TBlobField(DMSyaken.EmployTable.FieldByName('Photo')),bmWrite);
  try
  JPG.SaveToStream(Strm);
  DMSyaken.EmployTable.Post
 finally
 //DMSyaken.EmployTable.ApplyUpdates;
  Strm.Free;
  JPG.Free;

 end;
 DMSyaken.EmployTable.ApplyUpdates;
end;


HOta  2005-06-08 16:25:54  No: 15446

Jpg.Assign(Image1.Picture.Graphic);
 DMSyaken.EmployTable.FieldByName('Photo').Assign(Jpg);
でどうですか?


サンプー  2005-06-09 16:08:40  No: 15447

HOtaさん、いつもご教示ありがとうございます。
DMSyaken.EmployTable.FieldByName('Photo').Assign(Jpg);
でも、同じDBエラーが発生しました。


ん?  2005-06-09 17:16:42  No: 15448

ブレークポイントで止めて、ステップ実行すると、どの行でエラーになるのでしょう?

> Jpg.Assign(Image1.Picture.Graphic);
ここでエラーになってたりしません?

Image1の画像形式は?
D5のHelpにおけるTJPEGImage.Assign メソッドでは、以下のように記載されていましたが、これは大丈夫?
> Source は,Graphic プロパティが JPEG イメージまたはビットマップである TPicture 型


サンプー  2005-06-15 22:20:39  No: 15449

どうも、書き込み時にエラーになるようです。取りあえず、呼び込み、書き込むデータをびBitmap形式にて行うとうまくいくようなので、これにて代用します。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加