怎么把图片添加到数据库里.我在数据库里舌IMAGE为IMANG类型的.那位再次能帮我写点代码.谢谢!

解决方案 »

  1.   

    用文件流、内存流的方式:var 
      Ms:TmemoryStream;
      Jpg:TJpegImage;
    begin
      ms:=TmemoryStream.Create;
      Jpg.Assign(Image1.Picture.Graphic);
      Jpg.SaveToStream(Ms) ;
      Ms.Position :=0;
      ADOquery1.append;
      TBlobField(ADOquery1.FieldByName('img')).LoadFromStream(Ms);
      ADOquery1.Post;
      Ms.Free ;
      jpg.Free;
    end;
    读取到image中:
    Var
      Ms:TStringStream;
      Jpg:TJpegImage;
    begin
      Ms:=TstringStream.Create('');
      TBlobField(ADOquery1.FieldByName('img')).SaveToStream(Ms);
      Ms.Position :=0;
      Jpg.LoadFromStream(Ms);
      Image2.Picture.Assign(Jpg);
      jpg.Free;
      Ms.Free;
    end;uses jpeg
      

  2.   

    ////////////////////////////////MS:TStringStream;//////////////////////楼上的写错了代码?还是...
      

  3.   

    var
      strm: TMemoryStream;
      ext: String;
    begin
    if image1.picture.Graphic <> nil then //避免image1中无图像保存出错
    begin
      ext:=extractfileext(openpicturedialog1.FileName ); //取出文件的扩展名
      strm := tmemorystream.Create ;
    try
      image1.Picture.Graphic.SaveToStream(strm);
      querybase.Edit;
      strm.Position :=0;
      tblobfield(querybase.FieldByName('studentphotos')).LoadFromStream(strm);
      //如需直接由文件保存可采用如下注释行
      //TBlobField(adotable1.FieldByName('myimage')).LoadFromFile(OpenPictureDialog1.FileName);
      //以下记录保存到数据库的图像格式
      if uppercase(ext) = '.BMP' then
        querybase.FieldByName('isbmp').Value := 1 //BMP型图像数据
      else
        if (uppercase(ext) = '.JPG') OR ( uppercase(ext) = '.JPEG') Then
          querybase.FieldByName('isbmp').Value := 0; //JPEG型图像数据
          querybase.Post ;
    finally
      strm.Free ; //笔者发现如strm采用tblobstream类,程序运行到该语句会出现问题
    end;
    end;
      

  4.   

    //写入
    procedure TFrm_Main.N50Click(Sender: TObject);
    var
      strExtname:string;
      p:Pchar;
      FJpegImage:TJpegImage;
      FMemoryStream:TMemoryStream;
    begin
      if not OpenPictureDialog1.Execute then exit;
      setCurrentDir(ExtractFilePath(Application.ExeName));
      FJpegImage := TJpegImage.Create;
      FMemoryStream := TMemoryStream.Create;  p:=strRScan(Pchar(OpenPictureDialog1.FileName),'.');
      strExtname:=string(strLower(p+1));
      if strExtname='bmp' then
         begin
           Image1.Picture.Bitmap.LoadFromFile(OpenPictureDialog1.FileName);
           Image1.Picture.Bitmap.SaveToStream(FMemoryStream);
         end
      else if (strExtname='jpg') or (strExtname='jpeg') then
         begin
           FJpegImage.LoadFromFile(OpenPictureDialog1.FileName);
           TJpegImage(Image1.Picture).Assign(FJpegImage);
           FJpegImage.Assign(Image1.Picture);
           FJpegImage.SaveToStream(FMemoryStream);
         end
      else
         begin
           showmessage('对不起!目前系统还不支持 '+strExtname+' 格式。');
           FJpegImage.Free;
           FMemoryStream.Free;
           exit;
         end;  ADOTable1.First;
      ADOTable1.Edit;
      ADOTable1.FieldByName('F_uploadTime').AsDateTime:=now();
      ADOTable1.FieldByName('F_Type').AsString:=strExtname;
      FMemoryStream.Position := 0;
      TBlobField(ADOTable1.FieldByName('F_Picture')).LoadFromStream(FMemoryStream);
      ADOTable1.Post;  FJpegImage.Free;
      FMemoryStream.Free;
    end;//读出
    procedure TFrm_Main.showImage;
    var
      FJpegImage:TJpegImage;
      FMemoryStream:TMemoryStream;
      strExtname:string;
    begin
      FJpegImage := TJpegImage.Create;
      FMemoryStream := TMemoryStream.Create;  if ADOTable1.IsEmpty then exit;  ADOTable1.First;
      strExtname:=ADOTable1.FieldByName('F_Type').AsString;
      TBlobField(ADOTable1.FieldByName('F_Picture')).SaveToStream(FMemoryStream);
      FMemoryStream.Position := 0;
      if strExtname='bmp' then
         Image1.Picture.Bitmap.LoadFromStream(FMemoryStream)
      else if (strExtname='jpg') or (strExtname='jpeg') then
         begin
           FJpegImage.LoadFromStream(FMemoryStream);
           TJpegImage(Image1.Picture).Assign(FJpegImage);
         end
      else
         showmessage('出错!!!');  FJpegImage.Free;
      FMemoryStream.Free;
    end;