delphi如何把json传递过来的base64值转成图片
在Delphi中,您可以使用TNetEncoding.Base64.DecodeString方法将JSON传递过来的Base64编码字符串转换为原始二进制数据。然后,您可以将该二进制数据保存为图像文件或将其加载到TImage组件中以显示图像。
以下是一个示例代码,假设Base64编码的图像数据存储在JSON字符串的“image”字段中:
copy codeuses
System.NetEncoding, System.Classes, Vcl.Imaging.jpeg, Vcl.Graphics;
procedure Base64ToImage(const ABase64String: string; const AFileName: string);
var
InputBytes: TBytes;
OutputStream: TMemoryStream;
JPEGImage: TJPEGImage;
begin
// 将Base64编码的字符串转换为原始二进制数据
InputBytes := TNetEncoding.Base64.DecodeString(ABase64String);
// 将二进制数据保存到文件
OutputStream := TMemoryStream.Create;
try
OutputStream.WriteBuffer(InputBytes[0], Length(InputBytes));
OutputStream.SaveToFile(AFileName);
finally
OutputStream.Free;
end;
// 或者将二进制数据加载到TImage组件中
JPEGImage := TJPEGImage.Create;
try
JPEGImage.LoadFromStream(TBytesStream.Create(InputBytes));
Image1.Picture.Assign(JPEGImage);
finally
JPEGImage.Free;
end;
end;
您可以调用此过程,将Base64编码的字符串转换为图像文件或TImage组件中的图像。例如:
copy codeBase64ToImage(‘iVBORw0KGgoAAAANSUhEUgAAAAUAAAAAVCAYAAABv8r…’, ‘image.jpg’);
其中,第一个参数是Base64编码的字符串,第二个参数是要保存的文件名。如果您想将图像加载到TImage组件中,则将第二个参数设置为”。
Delphi 读取PNG base64编码文件生成图片
uses NetEncoding,PNGImage;
procedure TForm1.FormCreate(Sender: TObject);
var
LInputStream: TFileStream;
LOutputStream: TMemoryStream;
Png: TPNGImage;
begin
LInputStream := TFileStream.Create('C:TempPlateImage.txt', fmOpenRead or fmShareDenyWrite);
try
LOutputStream := TMemoryStream.Create;
try
TNetEncoding.Base64.Decode(LInputStream, LOutputStream);
ShowMessage(LOutputStream.Size.ToString);
LOutputStream.Position := 0;
Png := TPNGImage.Create;
try
Png.LoadFromStream(LOutputStream);
Image1.Picture.Assign(Png);
finally
Png.Free;
end;
finally
LOutputStream.Free;
end;
finally
LInputStream.Free;
end;
end;
保存文件,加载文件
1 procedure TForm1.Base64ToImage(const ABase64String, AFileName: string; AImage: TImage);
2 var
3 InputBytes: TBytes;
4 OutputStream: TMemoryStream;
5
6 Png: TPNGImage;
7 LInputStream: TFileStream;
8 LOutputStream: TMemoryStream;
9 begin
10 // 将Base64编码的字符串转换为原始二进制数据
11 InputBytes := TNetEncoding.Base64.DecodeStringToBytes(ABase64String);
12
13 // 将二进制数据保存到文件
14 OutputStream := TMemoryStream.Create;
15 try
16 OutputStream.WriteBuffer(InputBytes[0], Length(InputBytes));
17 OutputStream.SaveToFile(AFileName);
18 finally
19 OutputStream.Free;
20 end;
21
22 // 或者将二进制数据加载到TImage组件中
23 LInputStream := TFileStream.Create(AFileName, fmOpenRead or fmShareDenyWrite);
24 Png := TPNGImage.Create;
25 try
26 Png.LoadFromStream(LInputStream);
27
28 if AImage nil then
29 AImage.Picture.Assign(Png);
30 finally
31 Png.Free;
32 LInputStream.Free;
33 end;
34 end;
直接从字符流转PNG加载
1 procedure TForm1.Base64ToImage(const ABase64String, AFileName: string; AImage: TImage);
2 var
3 InputBytes: TBytes;
4 Png: TPNGImage;
5 oBytesStream: TBytesStream;
6 begin
7 // 将Base64编码的字符串转换为原始二进制数据
8 InputBytes := TNetEncoding.Base64.DecodeStringToBytes(ABase64String);
9
10 // 或者将二进制数据加载到TImage组件中
11 oBytesStream := TBytesStream.Create(InputBytes);
12 Png := TPNGImage.Create;
13 try
14 Png.LoadFromStream(oBytesStream);
15
16 if AImage nil then
17 AImage.Picture.Assign(Png);
18 finally
19 Png.Free;
20 end;
21 end;
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
在我们的日常生活中,数据无处不在。从社交媒体的帖子到在线购物的交易记录,我们每天都在产生和处理大量的数据。为了有效地管理这些数据,我们需要使用数据库。数据库是存储和管理数据的工具,它们可以按照不同的方式组织和处理数据。在这篇文章中,我们将重点介绍一种新型的数据…