代码之家  ›  专栏  ›  技术社区  ›  Pablo Abreu

使用MyDac上载图像(?)(德尔菲)

  •  0
  • Pablo Abreu  · 技术社区  · 5 年前

    我想创建一个选项,用delphi(X10,android)将图像上传到MyDac的数据库中,但是我没有找到任何关于这个的信息,有人可以帮我一些主意吗?

    (我想做的是一个简单的系统,从我的设备发送附件(JPG和PNG),用于我在Mysql中的专栏)

    0 回复  |  直到 5 年前
        1
  •  0
  •   vincent    5 年前

    将图像字段定义为blob字段。根据要存储的图片的大小,选择 TINYBLOB, BLOB, MEDIUMBLOB, or LONGBLOB (( https://dev.mysql.com/doc/refman/8.0/en/blob.html

    要在Blob字段中加载JPEG等图形文件,可以使用以下代码:

    procedure TForm1.Button1Click(Sender: TObject);
    var
      BlobStream: tStream;
      Surf: TBitmapSurface;
    begin
      if Image1 <> nil then
      begin
        Surf := TBitmapSurface.Create;
        Surf.Assign(Image1.Bitmap);
        BlobStream := TMemoryStream.Create;
        if not TBitmapCodecManager.SaveToStream(BlobStream, Surf, '.jpg') then
          raise EBitmapSavingFailed.Create('No');
        BlobStream.Position := 0;
        myquery2.ParamByName('imagem').LoadFromStream(BlobStream, ftBlob);
        myquery2.ExecSQL;
        Surf.Free;
      end;
    end;
    

    要将数据从Blob字段加载到TImage组件,请使用以下代码:

    procedure TForm1.Button2Click(Sender: TObject);
    var
      BlobStream: TStream;
    begin
      BlobStream := TMemoryStream.Create;
      myquery1.GetBlob(myQuery1.FieldByName('imagem')).SaveToStream(BlobStream);
      Blobstream.Position := 0;
      Image2.bitmap.loadfromstream(blobstream);
      BlobStream.Free;
    end;