DL6、XPPro、BDEにてデータベースAppを製作中です。
フォームに、buttonを2個,Imageを1つおいて,Button1を押すとImageに画像を描画、Button2を押すとその画像をテーブルの’Photo’項目(属性はグラフィック・・データベースデスクトップにてテーブルは作成)に書き込むコードをQ&A等を参考に作成しました。
Jpeg形式の画像をテーブルに保存しようと考え、以下のコードを実行すると’ビットマップイメージが不正です’とのDBエラーが発生します。どなたかご教示下さい。
肝心のコードは、以下の通りです。
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;
Jpg.Assign(Image1.Picture.Graphic);
DMSyaken.EmployTable.FieldByName('Photo').Assign(Jpg);
でどうですか?
HOtaさん、いつもご教示ありがとうございます。
DMSyaken.EmployTable.FieldByName('Photo').Assign(Jpg);
でも、同じDBエラーが発生しました。
ブレークポイントで止めて、ステップ実行すると、どの行でエラーになるのでしょう?
> Jpg.Assign(Image1.Picture.Graphic);
ここでエラーになってたりしません?
Image1の画像形式は?
D5のHelpにおけるTJPEGImage.Assign メソッドでは、以下のように記載されていましたが、これは大丈夫?
> Source は,Graphic プロパティが JPEG イメージまたはビットマップである TPicture 型
どうも、書き込み時にエラーになるようです。取りあえず、呼び込み、書き込むデータをびBitmap形式にて行うとうまくいくようなので、これにて代用します。
ツイート | ![]() |