-2

JPEG 画像を blob フィールドにロードしたいのですが、可能ですか? よく検索しますが、明確な答えが見つかりません。

私はこのコードを使用します:

var
  BlobField : TBlobField;
  Stream : TMemoryStream;
begin
  BlobField := ClientDataSet1.FieldByName('image');
  // Img is TImage and contain a JPEG image 
  Img.Picture.Graphic.SaveToStream(Stream); 
  Stream.Position := 0;
  BlobField.LoadFromStream(Stream);  // <-- Error: "Bitmap image is not valid"

ビットマップ画像を使用する必要がありますか?

解決済み: 問題は、フォームの TDBImage コンポーネントでした!. このコンポーネントはテスト目的でのみフィールドにリンクされていました。ビットマットでのみ機能するため、エラーが発生します

4

2 に答える 2

0

私はこのようなコードを使用します

image1.Picture.LoadFromFile (filename);
fs:= TFileStream.Create (filename, fmOpenRead);
try
 blobfield.LoadFromStream (fs);
finally
 fs.Free;
end;

と、書いてみると、一行目は何の為にあるのだろう。おそらく、画像をデータベース(またはより正確にはブロブフィールド)に保存しながら画面に表示するためです。

于 2013-09-12T09:33:23.043 に答える
0

使ってみて

Img.Picture.Bitmap.SaveToStream(Stream)

つまり、Graphic ではなく Bitmap プロパティ

--

画像のビットマップを使用したくない場合は、TJPEGImage を使用できます。

たとえば、次のようになります。

var
  MyJPEGImage: TJPEGImage;

[ ... ]

MyJPEGImage := TJPEGImage.Create;
MyJPEGImage.Assign(Img.Picture.Bitmap);
MyJPEGImage.SaveToStream(Stream);
Stream.Position := 0;
BlobField.LoadFromStream(Stream);

これを試して。

于 2013-09-12T09:29:40.077 に答える