怎样将捕获的JPEG格式图像的数据流(十六进制)转换成JPEG的图片在控件上显示
使用一个底层的摄像头捕获一副图像
但是得到的是一个十六进制的数据流
怎么让其在控件上显示?
数据流为
FF D8 FF E0 00 11 4A 46 49 46 00 01 02 03 04 05 06 07 08 09 0A
……………………………………………………(略去N多)
9B 59 2D C8 90 01 2C A4 6E 04 FD D1 F3 E3 F9 81 5C F7 B1 2D B3 FF D9

解决方案 »

  1.   

    var
     MS: TStream;
    begin
     with Table1 do
     MS:=CreateBlobStream(FieldbyName('image'),bmRead);
     Image1.Picture.Bitmap.LoadFromStream(MS);
     MS.Free;
    end;
      

  2.   

    uses      jpeg;//    保存Image1中的图象至数据库 :var         Ms:TmemoryStream;          Jpg  :      Tjpegimage;beginms:=TmemoryStream.Create;              Jpg.Assign(Image1.Picture.Graphic);Jpg.SaveToStream(Ms) ;                     Ms.Position :=0;ADOquery1.append;TBlobField(ADOquery1.FieldByName('img')).LoadFromStream(Ms);{//       就是将那个字段类型转的为TBlobField类型的字段,这样就可以保存这个字段的内容到磁盘           TBoobField(Table1.FieldByName('picture')).SaveToFile('c:\temp.bmp')     //       或者从一个磁盘读一个文件到这个字段中     TBlobField(Table1.FieldByName('picture')).LoadFromFile('c:\temp.bmp')类型的强制转换。其实(Table.FieldByName('picture'))也是一个类(TField).  }ADOquery1.Post;          Ms.Free ;            jpg.free;end; //     从数据库中读取图象到image2中:Var         Ms   :      TStringStream;      jpg:Tjpegimage;beginMs:=TstringStream.Create('');TBlobField(ADOquery1.FieldByName('img')).SaveToStream(Ms);   //类型的强制转换 如:TEdit(Sender).Text:=Str;  Ms.Position :=0;Jpg.LoadFromStream(Ms);           Image2.Picture.Assign(Jpg);         Ms.Free;         jpg.free;end; 例子:procedure TForm1.Button1Click(Sender: TObject);                         //插入圖片過程 var testStream:TMemoryStream; begin try testStream := TMemoryStream.Create;                           //創建內存流 Image1.Picture.Graphic.SaveToStream(testStream);      //將圖片保存至內存流中 adoquery1.Close;          adoquery1.SQL.Clear; adoQuery1.SQL.Add('Insert into test (id,photo) values (:id,:photo)'); //進行插入操作 adoquery1.Parameters.ParamByName('id').Value := '003'; adoQuery1.Parameters.ParamByName('photo').LoadFromStream(testStream,ftBlob); //讀取保存的內存圖 adoquery1.ExecSQL; finally           testStream.Free;   //釋放內存流 end; end;  procedure TForm1.Button2Click(Sender: TObject); //讀取圖片過程 var         mStream:TMemoryStream;          JpgFile:TjpegImage; begin if not ADOQuery1.FieldByName('photo').IsNull then begin ; mStream:=TMemoryStream.Create ;           JpgFile:=TjpegImage.Create ; TBlobField(ADOQuery1.FieldByName('photo')).SaveToStream(mStream);  //顯示的轉換為BlobFiled並保存至內存流 mStream.Position :=0;         jpgfile.LoadFromStream(MStream);    image2.Picture.Assign(JpgFile); end else        begin      image2.Picture :=nil;    end; end;