现在本人碰到了一个大问题
我想把图片通过解析成字符串的格式保存到数据库中,
在客户端用必须用数据敏感控件显示。
请教各位高手应该怎么做。

解决方案 »

  1.   

    关注啊,跟我的问题差不多啊帮你先转个粘看看思路
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, Grids, DBGrids, DB, ADODB, ExtCtrls;type
      TForm1 = class(TForm)
        ADOConnection1: TADOConnection;
        ADODataSet1: TADODataSet;
        DataSource1: TDataSource;
        DBGrid1: TDBGrid;
        Image1: TImage;
        procedure ADODataSet1AfterScroll(DataSet: TDataSet);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation
    procedure LoadImageFromField(APicture: TPicture; AField: TBlobField);
    var
      ABitmap: TBitmap;
      AStream: TMemoryStream;
    begin
      if AField.IsNull then
        Exit;  AStream := TMemoryStream.Create;
      try
        AField.SaveToStream(AStream);    // Skip OLE storage header
        AStream.Seek(78, soFromBeginning);
        ABitmap := TBitmap.Create;
        try
          ABitmap.LoadFromStream(AStream);
          APicture.Graphic := ABitmap;
        finally
          ABitmap.Free;
        end;
      finally
        AStream.Free;
      end;
    end;{$R *.dfm}procedure TForm1.ADODataSet1AfterScroll(DataSet: TDataSet);
    begin
      LoadImageFromField(
        Image1.Picture,
        DataSet.FieldByName('SDimage') as TBlobField
      );
    end;
    end.
      

  2.   

    数据库里用image保存图片这里有详细说明
    http://www.yesky.com/SoftChannel/72342371928440832/20030929/1733136_1.shtml
      

  3.   

    呵,因为TDBImage的LoadPicture的方法不能被继承,所以最后的方法就是,
    你自己写一个TDBIimageEx类,将系统的TDBImage类的代码复制过来,(代码改动非常小),主要是在LoadPicture方法中,加入自己的字符串转换代码就可以了,还涉及到一个字段类型判断的问题:系统是判断是Blob类型,才截稿(FDataLink.Field.IsBlob),你可以根据情况自己修改。
      

  4.   

    >>>>我想把图片通过解析成字符串的格式保存到数据库中,http://www.delphibbs.com/keylife/iblog_show.asp?xid=2765http://delphijl.99898.com/delphier/article/ShowArticle.asp?ArticleID=3function TForm1.GetPacketHead(FileName:String):integer;
    const FORMAT_DATALEN=512*1024;
    var
    FileStream:TFileStream;
    FormatStrings,StringsStream:TStringStream;
    iPos:integer;
    Mpg1Format:array[1..4]of byte;
    iResult:integer;
    begin
    if not(FileExists(FileName)) then
    begin
    Result:=$10184;
    Exit;
    end;
    FileStream:=TFileStream.Create(FileName,fmOpenRead or fmShareDenyNone);
    if FileStream.Sizebegin
    Result:=$10184+8+2352*2;
    Exit;
    end;
    StringsStream:=TStringStream.Create('');
    StringsStream.CopyFrom(FileStream,FORMAT_DATALEN);
    FileStream.Free;FormatStrings:=TStringStream.Create('');
    Mpg1Format[1]:=$00;
    Mpg1Format[2]:=$00;
    Mpg1Format[3]:=$01;
    Mpg1Format[4]:=$bb;
    FormatStrings.Write(Mpg1Format,Sizeof(Mpg1Format));
    iPos:=Pos(FormatStrings.DataString,StringsStream.DataString);
    FormatStrings.Free;
    StringsStream.Free;
    if iPos<=0 then
    iResult:=$10184+8+2352*2
    else
    iResult:=iPos-1+8+2352*2;
    Result:=iResult;
    end;