【发布时间】:2019-11-05 20:44:20
【问题描述】:
我有this url 在base64 中加密,这是一个动画二维码。
如何将其加载到TWebBrowser(或TImage)中?提前致谢。
编辑:
这是我的尝试,但没有成功:
uses
IdHTTP, IdSSLOpenSSL, GIFImg, ClipBrd;
type
TForm1 = class(TForm)
Button1: TButton;
Image1: TImage;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function GetStrFromClipbrd: string;
begin
if Clipboard.HasFormat(CF_TEXT) then
Result := Clipboard.AsText
else
begin
ShowMessage('There is no text in the Clipboard!');
Result := '';
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
MS: TMemoryStream;
IdHTTP1: TIdHTTP;
GIF: TGIFImage;
begin
MS := TMemoryStream.Create;
try
IdHTTP1 := TIdHTTP.Create;
try
GIF := TGIFImage.Create;
try
IdHTTP1.IOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(IdHTTP1);
IdHTTP1.HandleRedirects := True;
IdHTTP1.Get(GetStrFromClipbrd, MS);
MS.Seek(0, soFromBeginning);
GIF.LoadFromStream(MS);
Image1.Picture.Assign(GIF);
(Image1.Picture.Graphic as TGIFImage).Animate := True;
//(Image1.Picture.Graphic as TGIFImage).AnimationSpeed := 500;
finally
FreeAndNil(GIF);
end;
finally
FreeAndNil(IdHTTP1);
end;
finally
FreeAndNil(MS);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.DoubleBuffered := True;
end;
end.
【问题讨论】:
-
这不是用 Delphi base64 函数加密的,我也可以有解密代码。
-
Base64 是一种标准的数据编码方式,而不是加密方式。任何正确实现的 Base64 解码器都应该能够解码数据。看看,我认为,从 TNetEncoding 开始......
-
@RobLambden,非常感谢。
System.NetEncoding工作正常。 PS: 测试以 GIF 图像形式保存到磁盘。 -
@RemyLebeau,也谢谢你,+1 by:
"data: is not a URL type you can request with TIdHTTP, nor do you need to anyway. All of the image data is encoded directly in the URL string itself."。但是编码的 url 是一个动画图像,那么我想那是一个 GIF,而不是你建议的 BMP。 -
@BrowJr 您显示的
data:网址显示的是image/bmp,而不是image/gif,尽管它实际上包含一个GIF 图像。无论您从哪里获得的 URL 都是错误的。
标签: delphi base64 twebbrowser delphi-10.3-rio timage