FUNCTION JPEGSentinelsAreOK(CONST Filename: TFilename): BOOLEAN; VAR FileStream: TFileStream; w1 : WORD; // a "word" is always 2 bytes long w2 : WORD; BEGIN ASSERT(SizeOf(WORD) = 2); RESULT := FileExists(Filename); IF RESULT THEN BEGIN FileStream := TFileStream.Create(Filename, fmOpenRead OR fmShareDenyNone); TRY FileStream.Seek(0, soFromBeginning); // use seek or position FileStream.Read(w1,2); FileStream.Position := FileStream.Size - 2; FileStream.Read(w2,2) FINALLY FileStream.Free END; RESULT := (w1 = $D8FF) AND (w2 = $D9FF); END; END; //存图片 procedure TForm2.Button3Click(Sender: TObject); VAR JPEGImage:TJPEGImage; fS : TMemoryStream; begin IF OpenpictureDialog1.Execute THEN BEGIN IF JPEGSentinelsAreOK(OpenpictureDialog1.Filename) THEN BEGIN JPEGImage := TJPEGImage.Create; TRY JPEGImage.LoadFromFile(OpenPictureDialog1.Filename); Image1.Picture.Graphic := JPEGImage; try fs:=TMemoryStream.Create; JPEGImage.SaveToStream(fs); Table1.Append; Table1.FieldByName('題目ID').AsInteger:=Table1.RecordCount+1; TBlobField(Table1.FieldByName('圖片')).LoadFromFile(OpenpictureDialog1.Filename); Table1.Post; finally fs.Free; end; FINALLY JPEGImage.Free END; END; END; end;//读图片 procedure TForm2.DBGrid1DblClick(Sender: TObject); var bS : TBlobStream; Pic : TJpegImage; begin if DBGrid1.SelectedField = TDBGrid(Sender).DataSource.DataSet.FieldByName('圖片') then bS := TBlobStream.Create(TBlobField(Table1.FieldByName('圖片')), bmWrite); // AdoTable1Picture為欄位名稱。 try Pic:=TJpegImage.Create; try Pic.LoadFromStream(bS); Image1.Picture.Assign(Pic); finally Pic.Free; end; finally bS.Free end; end;end.
现在用在mysql下,不知哪位DX知道?
FUNCTION JPEGSentinelsAreOK(CONST Filename: TFilename): BOOLEAN;
VAR
FileStream: TFileStream;
w1 : WORD; // a "word" is always 2 bytes long
w2 : WORD;
BEGIN
ASSERT(SizeOf(WORD) = 2);
RESULT := FileExists(Filename);
IF RESULT
THEN
BEGIN
FileStream := TFileStream.Create(Filename, fmOpenRead OR fmShareDenyNone);
TRY
FileStream.Seek(0, soFromBeginning); // use seek or position
FileStream.Read(w1,2); FileStream.Position := FileStream.Size - 2;
FileStream.Read(w2,2)
FINALLY
FileStream.Free
END;
RESULT := (w1 = $D8FF) AND (w2 = $D9FF);
END;
END;
//存图片
procedure TForm2.Button3Click(Sender: TObject);
VAR
JPEGImage:TJPEGImage;
fS : TMemoryStream;
begin
IF OpenpictureDialog1.Execute
THEN
BEGIN
IF JPEGSentinelsAreOK(OpenpictureDialog1.Filename)
THEN
BEGIN
JPEGImage := TJPEGImage.Create;
TRY
JPEGImage.LoadFromFile(OpenPictureDialog1.Filename);
Image1.Picture.Graphic := JPEGImage;
try
fs:=TMemoryStream.Create;
JPEGImage.SaveToStream(fs);
Table1.Append;
Table1.FieldByName('題目ID').AsInteger:=Table1.RecordCount+1;
TBlobField(Table1.FieldByName('圖片')).LoadFromFile(OpenpictureDialog1.Filename);
Table1.Post;
finally
fs.Free;
end;
FINALLY
JPEGImage.Free
END;
END; END;
end;//读图片
procedure TForm2.DBGrid1DblClick(Sender: TObject);
var
bS : TBlobStream;
Pic : TJpegImage;
begin
if DBGrid1.SelectedField = TDBGrid(Sender).DataSource.DataSet.FieldByName('圖片') then
bS := TBlobStream.Create(TBlobField(Table1.FieldByName('圖片')), bmWrite); // AdoTable1Picture為欄位名稱。
try
Pic:=TJpegImage.Create;
try
Pic.LoadFromStream(bS);
Image1.Picture.Assign(Pic);
finally
Pic.Free;
end;
finally
bS.Free
end;
end;end.