频道分类

Delphi 访问https图片

作者:admin 来源: 日期:2020/9/8 21:45:30 人气: 标签:

 
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, System.Net.URLClient,  Jpeg,
  System.Net.HttpClient, System.Net.HttpClientComponent, Vcl.StdCtrls,
  Vcl.ExtCtrls;

type
  TForm1 = class(TForm)
    btn1: TButton;
    http: TNetHTTPClient;
    NetHTTPRequest1: TNetHTTPRequest;
    img1: TImage;
    procedure btn1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.btn1Click(Sender: TObject);
var
url:string;           // 图片地址
flag:IHTTPResponse;    // TNetHTTPClient控件发起访问后的返回信息(主要是 状态码和cookies)
image:TMemoryStream;   // 保存网页返回的图片数据的内存流(可以理解为保存byte数据的数组)
 png :TjpegImage;       // 图片流 将内存流转换为图片流然后 传递给   TImage控件使用
begin
   // 首先需要引入对应的图片类型库,在此处为 (uses Jpeg )
try
  image:=TMemoryStream.Create;         //构造内存流
  png :=TjpegImage.Create;            //构造图片流
  image.Position:=0;                 /// 设置内存流的postion,防止内存访问错误
  url:='https://www.mxttbk.com/wp-content/uploads/2020/08/bb119d5df9a4c0238b556d0197ec53fa.jpeg';
  /// <summary>
  /// 第一个参数是 图片地址
  ///  第二个参数是 内存流 (image)
  /// </summary>
flag:=http.Get(url,image);   // 发起访问
png.LoadFromStream(image);  // 将内存流 (image)转换到 图片流(png)
img1.Picture.Assign(png);    // 将图片流 传递给 图片控件
finally
// 释放流
    image.Free;
    png.Free;
end;

end;

end.